我有一个包含两列的布局。左列垂直滚动,右列固定。右列包含多个部分。
在某个时候,将显示一个覆盖图。我希望它涵盖除右列(<aside class="one">...</aside>
)的第一部分以外的所有内容。
现在,显示叠加层时,它覆盖了所有内容,包括aside.one
元素,即使元素具有较高的z-index值。
HTML:
<!-- ... -->
<section id="sidebar">
<aside class="one">...</aside>
<aside class="two">...</aside>
</section>
<!-- ... -->
<div class="overlay"></div>
CSS:
#sidebar {
position: fixed;
}
.one {
z-index: 3;
}
.overlay {
bottom: 0;
left: 0;
position: absolute;
right: 0;
top: 0;
z-index: 2;
}
这是一个jsFiddle,说明了我的问题的更完整示例:http : //jsfiddle.net/ncSWz/10/
我知道我需要更改一些HTML结构才能使其正常工作,但是我不确定从哪里开始。
提前致谢。
实际上,此问题涉及一些堆栈上下文。
这个想法本质上是,您需要同时具有.overlay
和aside.one
在相同的堆栈上下文中。您可以通过将移入来完成.overlay
此操作#sidebar
(因为它是position: fixed
-这会创建一个堆栈上下文)。
接下来,您需要在侧边栏中创建更多嵌套的堆叠上下文。通过改变定位aside.one
到relative
和.overlay
到fixed
,创建另一个2个堆叠环境,让您玩z-index
荷兰国际集团的元素。
最后,您需要更改z-index的位置#header
,使其位于叠加层之下。
来源:MDN:堆栈上下文
更新了jsFiddle: http : //jsfiddle.net/ncSWz/17/
<section id="sidebar">
<!-- Should be on top of the overlay -->
<aside class="one">...</aside>
<aside class="two">...</aside>
<!-- Should cover all elements except for aside.one -->
<div class="overlay"></div>
</section>
header {
z-index: 0;
}
...
.one {
position: relative;
width: 100%;
z-index: 3;
}
.overlay {
bottom: 0;
display: none;
left: 0;
position: fixed;
right: 0;
top: 0;
z-index: 1;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句