Das ist die Überschrift
In den Beispielen mit der relativen und absoluten Positionierung zuvor haben Sie bereits gesehen,
dass es zu Überlappungen der Elemente kommen kann, wenn Sie Elemente absolut
(oder auch relativ oder fixiert) in ihrer Position verändern oder aus dem Dokumentenfluss
herausnehmen. Sie sehen das nochmals in Abbildung 12.15.
Abbildung 12.15 Bei relativer oder absoluter (oder auch fixierter) Positionierung müssen
Sie damit rechnen, dass sich Elemente überlagern.
Standardmäßig liegen die relativen, absoluten und fixierten Elemente in der Reihenfolge
aufeinandergestapelt, wie sie im Dokumentenfluss des HTML-Dokuments notiert wurden.
© Rheinwerk Verlag, Bonn 2021
467
12.2 Übereinanderstapeln regeln mit »z-index«
Das zuletzt notierte Element liegt oben. Dieses Verhalten können Sie mit der CSS-Eigenschaft
z-index verändern. Die CSS-Eigenschaft z-index ist quasi die dritte Achse bei einem Element.
Bisher haben Sie sich nur um die horizontale und vertikale Position gekümmert (also die
x- und y-Achse). Die dritte Dimension ist die z-Achse, auf der die Elemente übereinanderliegen,
wie Abbildung 12.16 deutlicher zeigen soll.
Abbildung 12.16 Elemente, deren CSS-Eigenschaft »position« vom Standardwert »static« abweicht,
enthalten neben der x- und y-Achse noch eine z-Achse.
Die Verwendung der CSS-Eigenschaft z-index ist denkbar einfach. Je höher der notierte Wert
von z-index, desto weiter oben liegt das Element im Stapel. Das Element mit dem höchsten
z-index-Wert liegt somit ganz oben und das Element mit dem niedrigsten z-index-Wert ganz
unten. Bei gleichen Werten für z-index liegt das Element oben, das zuletzt im Dokumentenfluss
notiert wurde.
Bezogen auf Abbildung 12.15 sah der CSS-Code noch wie folgt aus:
...
.article01 {
width: 300px;
padding: 10px;
border: 1px solid black;
background-color: sandybrown;
}
.article02 {
position: relative;
top: -75px;
left: 100px;
width: 300px;
padding: 10px;
z
y
x
Persönliches Exemplar für Matthias Pester
468
12 CSS-Positionierung
border: 1px solid black;
background-color: bisque;
}
...
Listing 12.12 /Beispiele/Kapitel012/12_2/css/style.css
...
Artikel 1
Lorem ipsum dolor ...
Artikel 2
Lorem ipsum dolor ...
...
Listing 12.13 /Beispiele/Kapitel012/12_2/index.html
In diesem Beispiel hat das zweite article-Element, das mit dem Klassenselektor article02 relativ
verschoben wurde, das erste article-Element überlagert.
Wollen Sie jetzt, dass das erste article-Element über das zweite article-Element gelegt wird,
können Sie die CSS-Eigenschaft z-index im Klassenselektor article02 verwenden. Wenn Sie
im Klassenselektor article02 die CSS-Eigenschaft z-index mit einem beliebigen positiven
Wert verwendet haben, der niedriger als der z-index-Wert im Klassenselektor article01 ist,
werden Sie zunächst verdutzt feststellen, dass sich nichts geändert hat. Das liegt daran, dass
die Stapelung bzw. die Verwendung der CSS-Eigenschaft z-index keine Wirkung auf statisch
positionierte Elemente hat, wie es im Beispiel mit dem ersten article-Element und dem
Klassenselektor article01 der Fall ist.
In unserem Fall können Sie das Problem lösen, indem Sie den ersten Artikel mit der CSSEigenschaft
position: relative; versehen und keinerlei Werte für die Positionierung verwenden.
Das Element bleibt dabei wie gehabt an Ort und Stelle. Im umgebenden Element gilt
das Element aber dadurch als positioniert. Hierzu also die Lösung des Problems, mit der
das erste article-Element mithilfe der CSS-Eigenschaft z-index das zweite article-Element
überlagert:
...
.article01 {
position: relative;
width: 300px;
padding: 10px;
border: 1px solid black;
© Rheinwerk Verlag, Bonn 2021
469
12.2 Übereinanderstapeln regeln mit »z-index«
background-color: orange;
z-index: 2;
}
.article02 {
position: relative;
top: -75px;
left: 100px;
width: 300px;
padding: 10px;
border: 1px solid black;
background-color: yellow;
z-index: 1;
}
...
Listing 12.14 /Beispiele/Kapitel012/12_2/css/style2.css
...
Artikel 1
Lorem ipsum dolor ...
Artikel 2
Lorem ipsum dolor ...
...
Listing 12.15 /Beispiele/Kapitel012/12_2/index2.html
In Abbildung 12.17 (verglichen mit Abbildung 12.15) können Sie sehen, wie das erste article-
Element über das zweite article-Element im Stapel gelegt wird. Zu verdanken ist dies dem
höheren z-index-Wert (hier: 2), der im ersten article-Element mit dem Klassenselektor
article01 verwendet wird. Den zweiten z-index-Wert (hier: 1) im Klassenselektor article02
hätten Sie nicht angeben müssen. Aber Sie können hier gerne den Wert der CSS-Eigenschaft
z-index im Klassenselektor article02 auf 3 erhöhen, um zu sehen, dass dann wieder das zweite
article-Element über das erste gelegt wird.
geht nicht
geht
geht