Ser*_*gio 16 css z-index pseudo-element
如果我们z-index结合使用position: absolute;它可能会将::before元素置于其自身之下.另一个问题有一个很好的例子(jsfiddle.net/Ldtfpvxy).
基本上
<div id="element"></div>
#element {
position: relative;
width: 100px;
height: 100px;
background-color: blue;
}
#element::after {
content: "";
width: 150px;
height: 150px;
background-color: red;
/* create a new stacking context */
position: absolute;
z-index: -1; /* to be below the parent element */
}
Run Code Online (Sandbox Code Playgroud)
呈现:

因此堆叠上下文/顺序由定义z-index.但是,当我申请z-index: 1;到的元素,z-index: -1;它的::before我不能达到同样的事情.
只有我省略z-index了元素.
任何想法为什么会这样?该元素是否在其::before&::afterpseudos 之后呈现,以便它们变得相同z-index?
工作: https ://jsfiddle.net/Ldtfpvxy/
不工作: https ://jsfiddle.net/Ldtfpvxy/1/(仅添加z-index: 1;到元素)
bfa*_*tto 17
您的div及其伪子项是同一堆栈上下文的成员,在本例中是根堆叠上下文.您为伪元素提供的新堆叠上下文将用作对其子元素(不存在)的引用,但该z-index值适用于当前堆叠上下文.和CSS规范规定每个堆叠内容如下漆顺序:
在每个堆叠上下文中,以下层按从前到后的顺序绘制:
- 形成堆叠背景的元素的背景和边界.
- 子堆叠上下文与负堆栈级别(最负面的).
- 流入的,非内联级别,非定位后代.
- 未定位的花车.
- 流入的,内联级的,未定位的后代,包括内联表和内联块.
- 堆栈级别为0的子堆栈上下文和堆栈级别为0的已定位后代.
- 堆叠具有正堆栈级别的子堆栈(最少积极的第一个).
看,子堆栈上下文具有负的堆栈级别,例如您的堆栈级别为0的已定位后代div::after之前,例如它自己.这解释了您注意到的行为.div