我知道这是一个旧线程,但我觉得有必要发布正确的答案。这个问题的实际答案是,您需要使用伪元素在元素的父级上创建一个新的堆叠上下文(实际上您必须给它一个 z-index,而不仅仅是一个位置)。
像这样:
#parent {
position: relative;
z-index: 1;
}
#pseudo-parent {
position: absolute;
/* no z-index allowed */
}
#pseudo-parent:after {
position: absolute;
top:0;
z-index: -1;
}
它与使用 :before 或 :after 伪元素无关。
#parent { position: relative; z-index: 1; }
#pseudo-parent { position: absolute; } /* no z-index required */
#pseudo-parent:after { position: absolute; z-index: -1; }
/* Example styling to illustrate */
#pseudo-parent { background: #d1d1d1; }
#pseudo-parent:after { margin-left: -3px; content: "M" }
<div id="parent">
<div id="pseudo-parent">
</div>
</div>