En muchos casos, un elemento debe estar posicionado para z-index
trabajar.
De hecho, la aplicación position: relative
a los elementos en la pregunta probablemente resolvería el problema (pero no se proporciona suficiente código para saberlo con certeza).
En realidad, position: fixed
, position: absolute
y position: sticky
permitirá también z-index
, pero esos valores también cambiar el diseño. Con position: relative
el diseño no se altera.
Esencialmente, mientras el elemento no esté position: static
(la configuración predeterminada) se considera posicionado y z-index
funcionará.
Muchas respuestas a "¿Por qué no funciona el índice z?" las preguntas afirman que z-index
solo funciona en elementos posicionados. A partir de CSS3, esto ya no es cierto.
Los elementos que son elementos flexibles o elementos de cuadrícula se pueden usar z-index
incluso cuando position
están static
.
De las especificaciones:
4.3. Artículo Flex Z-Ordering
Los elementos flexibles pintan exactamente igual que los bloques en línea, excepto que el orden del documento modificado se usa en lugar del orden del documento sin procesar y los z-index
valores que no sean auto
crear un contexto de apilamiento, incluso si position
es así static
.
5.4. Ordenamiento del eje Z: la z-index
propiedad
El orden de pintura de los elementos de la cuadrícula es exactamente el mismo que el de los bloques en línea, excepto que el orden del documento modificado se usa en lugar del orden del documento sin procesar y los z-index
valores que no sean auto
crear un contexto de apilamiento, incluso si
position
es así static
.
Aquí hay una demostración de cómo z-index
trabajar en elementos flexibles no posicionados: https://jsfiddle.net/m0wddwxs/
Stacking Context
.