我正在尝试调整某些元素的堆叠顺序;这是一个SSCCE。
鉴于此 HTML 片段:
<div id="block1">
<div>Lorem ipsum dolor.</div>
<div id="widget">
<div>Widgety goodness!</div>
</div>
</div>
<div id="block2">
<div>Lorem ipsum dolor.</div>
</div>
<div id="block3">
<div>Lorem ipsum dolor.</div>
</div>
我正在尝试显示#widget
在#block2
; 使用以下 CSS,您会发现在不更改#widget
节点树中的位置的情况下会出现问题。
#block1, #block2, #block3 {
position: relative;
min-height: 50px;
width: 100%;
}
#block1, #block3 {
background-color: #abc;
color: #123;
z-index: 1;
}
#block2 {
background-color: #def;
color: #456;
z-index: 2;
}
#widget {
background-color: #f00;
position: absolute;
z-index: 999;
left: 200px;
top: 40px;
}
正如您在小提琴中看到的,与;#widget
部分重叠 #block2
这很有意义,因为父#block1
级在堆叠顺序中的兄弟级中较低。
显而易见的答案是:制作#widget
的孩子#block2
,但不幸的是,这不是这里的解决方案。此外,#blockN
不能z-index
修改元素的相对值;块 1 和 3 必须小于 2。(我的意思是计算的值可能不同,但#block2
总是大于它的兄弟姐妹)。原因在于box-shadow
分层。
是否有任何合理的(阅读:跨浏览器、IE7+)方法可以#widget
从它的堆叠上下文中删除,同时保留它的位置、坐标位置、尺寸等?
使用fixed
定位可以根据需要删除它,但是它也获得了固定的所有视觉属性(这使其成为非解决方案)
我认为这可能已经以迂回的方式回答了,但是我没有找到。另外,道歉;看来我在最初的帖子中可能遗漏了一些无害但关键的细节。我想我现在已经涵盖了所有内容。