Je sais que c'est un vieux fil de discussion, mais je ressens le besoin de poster la réponse appropriée. La réponse réelle à cette question est que vous devez créer un nouveau contexte d'empilement sur le parent de l'élément avec le pseudo-élément (et vous devez réellement lui donner un z-index, pas seulement une position).
Comme ça :
#parent {
position: relative;
z-index: 1;
}
#pseudo-parent {
position: absolute;
/* no z-index allowed */
}
#pseudo-parent:after {
position: absolute;
top:0;
z-index: -1;
}
Cela n'a rien à voir avec l'utilisation des pseudo-éléments :before ou :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>
2 votes
Relié : (même raison et solution) - Comment faire en sorte qu'un élément parent apparaisse au-dessus de l'enfant ? et Comment faire en sorte que l'élément enfant ait un z-index plus élevé que le parent ?