【发布时间】:2019-09-16 05:31:23
【问题描述】:
我有一个特定的用例,我有一个侧边栏,其中包含列表中的一些导航项,并希望在悬停时展开元素。左侧 div 中悬停的项目应与右侧 div 重叠。
如果我创建列表项absolute,这基本上可以工作。
唯一的问题是,在溢出中缩放或滚动时,它们的位置不再“好”。
要解决此问题,我可以将父级设置为 relative。然而,这改变了堆叠行为,我不能再重叠正确的 div。
有没有办法让左侧项目与右侧 div 重叠,而不影响它们在缩放或滚动时的位置?
.container {
display:flex;
}
.left {
width:49vw;
height:50vh;
background-color:yellow;
overflow-y:auto;
overflow-x:hidden;
}
.right {
width:49vw;
height:50vh;
background-color:green;
position:relative;
//position:absolute;
//left:49vw;
z-index:1
}
li {
position:relative; //affects scrolling/zooming behaviour if not used
}
.item-text:hover {
background-color:red;
width:80vw;
position:absolute;
z-index:2;
}
<div class="container">
<div class="left">
<div class="list-container">
<ul>
<li><div class="item-text">
1
</div></li>
<li><div class="item-text">
1
</div></li>
<li><div class="item-text">
1
</div></li>
<li><div class="item-text">
1
</div></li>
<li><div class="item-text">
1
</div></li>
<li><div class="item-text">
1
</div></li>
<li><div class="item-text">
1
</div></li>
<li><div class="item-text">
1
</div></li>
</ul>
</div>
</div>
<div class="right">
</div>
</div>
.container {
display:flex;
}
.left {
width:49vw;
height:50vh;
background-color:yellow;
overflow-y:auto;
overflow-x:hidden;
}
.right {
width:49vw;
height:50vh;
background-color:green;
position:relative;
//position:absolute;
//left:49vw;
z-index:1
}
li {
//position:relative; //affects scrolling/zooming behaviour if not used
}
.item-text:hover {
background-color:red;
width:80vw;
position:absolute;
z-index:2;
}
<div class="container">
<div class="left">
<div class="list-container">
<ul>
<li><div class="item-text">
1
</div></li>
<li><div class="item-text">
1
</div></li>
<li><div class="item-text">
1
</div></li>
<li><div class="item-text">
1
</div></li>
<li><div class="item-text">
1
</div></li>
<li><div class="item-text">
1
</div></li>
<li><div class="item-text">
1
</div></li>
<li><div class="item-text">
1
</div></li>
</ul>
</div>
</div>
<div class="right">
</div>
</div>
【问题讨论】:
-
使用 :before 会很容易,但你必须要使用 overflow-x:hidden;在 .left 上?
-
不,我认为我不一定需要overflow-x:hidden。您将如何使用 :before 解决它?
标签: html css css-position z-index absolute