Cela n'a pas de sens pour moi. Ne devrait pas :: avant d'être rendu avant l'intervalle? Cela fonctionne si j'ajoute une position: relative à l'élément enfant.Pourquoi div :: before apparaît en haut de l'élément children?
Cela pourrait avoir quelque chose à voir avec le contexte d'empilement, mais je ne sais pas exactement comment.
https://www.w3.org/TR/CSS21/visuren.html#layers
La durée dans ce cas tombe dans # 3 parce qu'il est non positionné et avant :: # 6 parce qu'il est un descendant positionné?
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>
Vous utilisez 'position: absolute' de sorte qu'il est placé exactement là où vous le dites, c'est-à-dire dans le coin supérieur gauche. – FluffyKitten
Cela a quelque chose à voir avec le contexte d'empilement, par exemple, si vous déclarez une valeur 'z-index' autre que' auto', comme '-1', vous créerez un contexte d'empilement, et le': pseudo-élément 'apparaîtra sous l'élément' span' de la fratrie. Sans une valeur 'z-index' déclarée, l'élément absolument positionné apparaîtra toujours au-dessus des éléments" non-positionnés "ou des éléments' static' (* ex: 'position: static' *) - qui est généralement le positionnement par défaut de tout élément. – UncaughtTypeError