Z-Index und Pseudoelemente: Eine Fallstudie
In CSS gibt die Z-Index-Eigenschaft die Stapelreihenfolge von Elementen an einer Seite und bestimmt, welche Elemente „vor“ oder „hinter“ anderen erscheinen. Wenn es jedoch um Pseudoelemente wie ::before oder ::after geht, kann ihre Interaktion mit z-index manchmal nicht einfach sein.
Stellen Sie sich ein Szenario vor, in dem wir ein Header-Element mit a erstellen ::before Pseudoelement, wie in der Problemstellung beschrieben. Wir beabsichtigen, das Pseudoelement hinter dem Header-Element zu belassen, aber wenn wir einen Z-Index auf den Header anwenden, tritt das Pseudoelement unerwartet in den Vordergrund.
Die Erklärung liegt in der Natur des Pseudo-Elements. Elemente selbst. Wie in der CSS-Spezifikation angegeben, interagieren die Pseudoelemente ::before und ::after mit anderen Boxen, als wären sie echte Elemente, die direkt in das zugehörige Element eingefügt werden. Dies bedeutet, dass das Pseudoelement effektiv im übergeordneten Element verschachtelt ist.
Wenn wir einen Z-Index auf das Header-Element anwenden, wird ein neuer Stapelkontext erstellt. Ein Stapelkontext ist ein 3D-Raum, in dem Elemente in der Reihenfolge ihrer Z-Indexwerte gerendert werden. Elemente innerhalb desselben Stapelkontexts können einander nicht überlappen.
In diesem Fall wird das Pseudoelement innerhalb desselben Stapelkontexts wie das Headerelement positioniert. Da es als verschachteltes Element betrachtet wird, kann es nicht hinter dem Header schweben, da es dazu den Stapelkontext verlassen müsste.
Um dieses Problem zu beheben, besteht eine Lösung darin, wie vorgeschlagen ein separates Element vor dem Header zu erstellen in der Antwort. Dieses Element fungiert als Container für den Header und das Pseudoelement und sein Z-Index stapelt den Header korrekt davor.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3