W wielu przypadkach element musi być ustawiony, z-indexaby działał.
Rzeczywiście, zastosowanie position: relativesię do elementów w pytaniu prawdopodobnie rozwiązałoby problem (ale nie ma wystarczającej ilości kodu, aby wiedzieć na pewno).
Właściwie position: fixed, position: absolutei position: stickyumożliwi również z-index, ale te wartości również zmienić układ. Dzięki position: relativeukładowi nie przeszkadza.
Zasadniczo, o ile element nie jest position: static(ustawienie domyślne), jest uważany za ustawiony i z-indexbędzie działał.
Wiele odpowiedzi na pytanie „Dlaczego indeks Z nie działa?” pytania twierdzą, że działa z-index tylko na pozycjonowanych elementach. Od wersji CSS3 nie jest to już prawdą.
Elementy, które są elementami elastycznymi lub elementami siatki, mogą być używane z-indexnawet wtedy, gdy positionsą static.
Ze specyfikacji:
4.3. Zamawianie elementów elastycznych Z.
Elementy Flex malują dokładnie tak samo, jak bloki w wierszu, z tą różnicą, że zamiast pierwotnej kolejności dokumentów jest używana kolejność dokumentów o zmodyfikowanej kolejności, a z-indexwartości inne niż autotworzą kontekst układania, nawet jeśli positionjest static.
5.4. Porządkowanie osi Z: z-indexwłaściwość
Kolejność malowania elementów siatki jest dokładnie taka sama, jak w blokach wbudowanych, z wyjątkiem tego, że zamiast kolejności dokumentów surowych używana jest kolejność dokumentów o zmodyfikowanej kolejności, a z-indexwartości inne niż autotworzą kontekst układania, nawet jeśli
positionjest static.
Oto demonstracja z-indexpracy z niepozycjonowanymi elementami elastycznymi: https://jsfiddle.net/m0wddwxs/
Stacking Context.