これは私には意味がありません。すべきではない:前にスパンの前にレンダリングされる?子要素に相対的な位置を追加すると動作します。なぜdiv :: beforeはchildren要素の上に表示されますか?
これはスタッキングのコンテキストと関係する可能性がありますが、正確にはわかりません。
https://www.w3.org/TR/CSS21/visuren.html#layers
それは位置の子孫だから、この場合のスパンは#6の前に::それは非位置付けていますので、#3に該当すると?
div { position:relative; }
div:before {
content: '';
width: 100%;
height: 100%;
background: red;
position: absolute;
top: 0;
left: 0;
}
/* Adding this works: */
/* span { position: relative; } */
<div>
<span>Test</span>
</div>
'position:absolute'を使用していますので、あなたが指定した場所、つまり左上隅に正確に配置されています。 – FluffyKitten
これは、例えば '-1'のように' auto'以外の 'z-index'の値を宣言すると、スタック化コンテキストと関係があります。例えば、スタック化コンテキストを作成し、':pseudo-element 'が兄弟の' span'要素の下に現れます。 'z-index'値が宣言されていなければ、絶対配置された要素は常に、"配置されていない "要素または' static'要素の上に表示されます(*例: 'position:static' *)。素子。 – UncaughtTypeError