循环展示div,此div横向展示,点击div并使折叠面板下的隐藏部分始终顶着页面左边显示
时间: 2023-11-26 21:03:19 浏览: 93
可以使用CSS的flex布局和JavaScript来实现这个效果。
首先,我们需要使用flex布局将多个div横向排列,同时设置它们的宽度和高度。然后,我们给每个div添加一个点击事件,当点击某个div时,使用JavaScript将折叠面板下的隐藏部分的位置设置为始终顶着页面左边显示。
具体的代码如下:
```html
<div class="container">
<div class="box" onclick="showPanel(1)">Box 1</div>
<div class="box" onclick="showPanel(2)">Box 2</div>
<div class="box" onclick="showPanel(3)">Box 3</div>
<!--更多的div-->
</div>
<div class="panel">
<div class="content" id="panel1">Panel 1 content</div>
<div class="content" id="panel2">Panel 2 content</div>
<div class="content" id="panel3">Panel 3 content</div>
<!--更多的面板内容-->
</div>
```
```css
.container {
display: flex;
flex-wrap: nowrap;
overflow-x: auto;
width: 100%;
height: 100px;
}
.box {
width: 100px;
height: 100px;
margin-right: 10px;
background-color: #ccc;
cursor: pointer;
}
.panel {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
opacity: 0;
transition: opacity 0.5s ease-in-out;
}
.panel.active {
z-index: 1;
opacity: 1;
}
.content {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #fff;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
}
```
```javascript
function showPanel(index) {
// 显示面板
var panel = document.getElementById("panel" + index);
panel.parentNode.classList.add("active");
// 设置面板位置
var container = document.querySelector(".container");
var panelWidth = panel.offsetWidth;
var panelLeft = panel.getBoundingClientRect().left;
container.scrollLeft = panelLeft - panelWidth;
}
```
在上面的代码中,我们使用了position:fixed来固定折叠面板,使其在页面滚动时不会跟随滚动。然后,我们使用了transition和opacity来实现面板的渐变显示和隐藏。在JavaScript中,我们首先获取要显示的面板的元素,然后将其父级元素的class设置为“active”,这样就可以使面板显示出来。接着,我们获取了面板的宽度和位置,将容器的滚动位置设置为面板左边界位置减去面板宽度,这样就可以使面板的左边界始终顶着页面左边显示了。
阅读全文