Diese Frage kann auf verschiedene Arten gelöst werden. Wenn Sie jedoch die Stapelregeln kennen, können Sie die beste Antwort finden, die für Sie funktioniert.
Lösungen
Das <html>
Element ist Ihr einziger Stapelkontext. Befolgen Sie also einfach die Stapelregeln in einem Stapelkontext, und Sie werden sehen, dass die Elemente in dieser Reihenfolge gestapelt werden
- Das Stammelement des Stapelkontexts (
<html>
in diesem Fall das Element)
- Positionierte Elemente (und ihre untergeordneten Elemente) mit negativen Z-Index-Werten (höhere Werte werden vor niedrigeren Werten gestapelt; Elemente mit demselben Wert werden entsprechend dem Erscheinungsbild im HTML gestapelt)
- Nicht positionierte Elemente (sortiert nach Erscheinungsbild im HTML)
- Positionierte Elemente (und ihre untergeordneten Elemente) mit dem Z-Index-Wert auto (geordnet nach Darstellung im HTML-Code)
- Positionierte Elemente (und ihre untergeordneten Elemente) mit positiven Z-Index-Werten (höhere Werte werden vor niedrigeren Werten gestapelt; Elemente mit demselben Wert werden entsprechend dem Erscheinungsbild im HTML gestapelt).
Also kannst du
- Setzen Sie einen Z-Index von -1, denn
#under
positioniert -ve Z-Index wird hinter nicht positioniertem #over
Element angezeigt
- Stellen Sie die Position
#over
auf relative
so ein, dass Regel 5 für sie gilt
Das eigentliche Problem
Entwickler sollten Folgendes wissen, bevor sie versuchen, die Stapelreihenfolge von Elementen zu ändern.
- Wenn ein Stapelkontext gebildet wird
- Standardmäßig ist das
<html>
Element das Stammelement und der erste Stapelkontext
- Stapelreihenfolge in einem Stapelkontext
Die folgenden Regeln für die Stapelreihenfolge und den Stapelkontext stammen von diesem Link
Wenn ein Stapelkontext gebildet wird
- Wenn ein Element das Stammelement eines Dokuments ist (das
<html>
Element)
- Wenn ein Element einen anderen Positionswert als statisch und einen anderen Z-Indexwert als auto hat
- Wenn ein Element einen Deckkraftwert von weniger als 1 hat
- Mehrere neuere CSS-Eigenschaften erstellen auch Stapelkontexte. Dazu gehören: Transformationen, Filter, CSS-Regionen, ausgelagerte Medien und möglicherweise andere. https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context
- In der Regel muss eine CSS-Eigenschaft, wenn sie in einem Offscreen-Kontext gerendert werden muss, einen neuen Stapelkontext erstellen.
Stapelreihenfolge in einem Stapelkontext
Die Reihenfolge der Elemente:
- Das Stammelement des Stapelkontexts (das
<html>
Element ist standardmäßig der einzige Stapelkontext, aber jedes Element kann ein Stammelement für einen Stapelkontext sein, siehe Regeln oben).
- Sie können kein untergeordnetes Element hinter ein Root-Stacking-Kontextelement stellen
- Positionierte Elemente (und ihre untergeordneten Elemente) mit negativen Z-Index-Werten (höhere Werte werden vor niedrigeren Werten gestapelt; Elemente mit demselben Wert werden entsprechend dem Erscheinungsbild im HTML gestapelt)
- Nicht positionierte Elemente (sortiert nach Erscheinungsbild im HTML)
- Positionierte Elemente (und ihre untergeordneten Elemente) mit dem Z-Index-Wert auto (geordnet nach Darstellung im HTML-Code)
- Positionierte Elemente (und ihre untergeordneten Elemente) mit positiven Z-Index-Werten (höhere Werte werden vor niedrigeren Werten gestapelt; Elemente mit demselben Wert werden entsprechend dem Erscheinungsbild im HTML gestapelt).
In
position: relative;
zu #overGeige
quelle
</body>
Am</html>
Ende gibt es ein zusätzliches Tag und ein zusätzliches Tag .position: relative
von über Element hat mein Problem tatsächlich behoben.z-Index nur in einem bestimmten Kontext dh
relative
,fixed
oderabsolute
Position.Der Z-Index für ein relatives Div hat nichts mit dem
z-index
eines absoluten oder festen Div zu tun .BEARBEITEN
Dies ist eine unvollständige Antwort.Diese Antwort liefert falsche Informationen. Bitte überprüfen Sie @ Dansingermans Kommentar und Beispiel unten.quelle
Da Ihr
over
Div keine Positionierung hat, weiß der Z-Index nicht, wo und wie er positioniert werden soll (und in Bezug auf was?). Ändern Sie einfach die Position Ihres Over-Div in Relative, damit es keine Nebenwirkungen auf dieses Div gibt, und dann wird das Under-Div Ihrem Willen gehorchen.Hier ist dein Beispiel für jsfiddle: Fiddle
edit : Ich sehe jemanden, der diese Antwort bereits erwähnt hat!
quelle
Geben Sie das
#under
Negativz-index
, z-1
Dies geschieht, weil die
z-index
Eigenschaft in ignoriert wird. Dies istposition: static;
der Standardwert. In dem CSS-Code, den Sie geschrieben haben,z-index
gilt dies1
für beide Elemente, unabhängig davon, wie hoch Sie ihn eingestellt haben#over
.Wenn Sie
#under
einen negativen Wert angeben, steht dieser hinter jedemz-index: 1;
Element, d#over
. H.quelle
Ich habe ein Navigationsmenü erstellt. Ich habe
overflow: hidden
in der CSS meines Navis alles versteckt. Ich dachte, es sei ein Z-Index-Problem, aber ich habe wirklich alles außerhalb meines Navis versteckt.quelle
gemäß Abschnitt "Überlappende Elemente" auf http://web.archive.org/web/20130501103219/http://w3schools.com/css/css_positioning.asp
quelle
das Verhalten von festen Elementen (und absoluten Elementen) wie in CSS Spec definiert:
Dies macht die Zindex-Berechnung etwas kompliziert. Ich habe mein Problem (dieselbe Situation) gelöst, indem ich dynamisch einen Container im Body-Element erstellt und alle diese Elemente (die als "meine festen" klassifiziert sind) innerhalb dieses Body-Level-Elements verschoben habe )
quelle