In vielen Fällen muss ein Element positioniert werden, damit z-indexes funktioniert.
In der Tat würde eine Anwendung position: relativeauf die Elemente in der Frage das Problem wahrscheinlich lösen (aber es wird nicht genügend Code bereitgestellt, um dies sicher zu wissen).
Eigentlich position: fixed, position: absoluteund position: stickywird auch ermöglichen z-index, aber diese Werte auch das Layout ändern. Mit position: relativedem Layout wird nicht gestört.
Solange das Element nicht vorhanden ist position: static(Standardeinstellung), wird es im Wesentlichen als positioniert betrachtet und z-indexfunktioniert.
Viele Antworten auf "Warum funktioniert der Z-Index nicht?" Fragen behaupten, dass z-index nur auf positionierten Elementen funktioniert. Ab CSS3 ist dies nicht mehr der Fall.
Elemente, die flexible Elemente oder Rasterelemente sind, können auch dann verwendet werden z-index, wenn dies der Fallposition ist static.
Aus den Spezifikationen:
4.3. Flex Artikel Z-Bestellung
Flex-Elemente werden genauso wie Inline-Blöcke gezeichnet, außer dass die Reihenfolge der geänderten Dokumente anstelle der Reihenfolge der Rohdokumente verwendet wird und z-indexandere Werte als das autoErstellen eines Stapelkontexts verwendet werden, selbst wenn dies der Fall positionist static.
5.4. Z-Achsen-Reihenfolge: die z-indexEigenschaft
Die Malreihenfolge von Rasterelementen entspricht genau der von Inline-Blöcken, außer dass die Reihenfolge der geänderten Dokumente anstelle der Reihenfolge der Rohdokumente verwendet wird und z-indexandere Werte als das autoErstellen eines Stapelkontexts verwendet werden, selbst wenn dies der Fall
positionist static.
Hier ist eine Demonstration der z-indexArbeit an nicht positionierten Flex-Elementen: https://jsfiddle.net/m0wddwxs/
Stacking Context.