【发布时间】:2020-02-14 13:58:17
【问题描述】:
我有一个约束:这两个父 div 不能是“一个高于另一个”,它们的重要性相同。
我有 2 个主 div,它们都是 z-index: 2。在第一个 div 中,我有一个 child 其 z-index is 99999,现在,因为 relative 和 static 都被浏览器以先来后到的方式处理,也就是说,div2 有比 div1 更高的顺序,我在 div1 中的绝对 child 将落后于 div2。观看:
#item1 {
width: 100%;
height: 200px;
background-color: gray;
position: relative;
z-index: 2;
}
#child {
position: absolute;
bottom: -15px;
width: 50px;
height: 50px;
border-radius: 50%;
background: white;
z-index: 15;
}
#item2 {
width: 100%;
height: 200px;
background-color: green;
position: relative;
z-index: 2;
}
<div id="item1">
<div id="child">
</div>
</div>
<div id="item2">
</div>
我在这里缺少什么?据说网络上充满了relative 的 div,它们一个接一个地出现,它们里面有绝对的 div。
【问题讨论】:
-
我认为子元素的 z-index 不能高于其父元素。尝试将 div1 z-index 设为 3。
-
@LoiNguyenHuynh 所以,如果我要正确理解所有这些,我只是在脑海中遇到了一个悖论。不可能有一个项目不比另一个更高。没有“同等级别”这样的东西,一个项目总是高于另一个——那么问题是,作为开发人员,我决定哪一个项目在视图方面更重要。对吗?
-
还有一个叫做painting order的东西。如果元素没有相互重叠,则它们可能是同时绘制的(或者如您所说的“相等级别”)。如果它们重叠,则后面绘制的将比提前绘制的“在视图方面更重要”。
-
@LoiNguyenHuynh 好吧,当然,但我说的是 2 个普通 div,
static或relative具有相同的z-index。 DOM 中的另一层被赋予绘制优先级,是吗?除此之外,还有一些项目可能会触发该订单的重新构建,但如果我们只是以这个基本示例为例,那就是它的工作原理。