Em muitos casos, um elemento deve ser posicionado para z-index
funcionar.
De fato, aplicar position: relative
aos elementos da pergunta provavelmente resolveria o problema (mas não há código suficiente fornecido para ter certeza).
Na verdade, position: fixed
, position: absolute
e position: sticky
também permitirá z-index
, mas esses valores também mudar o layout. Com position: relative
o layout não é perturbado.
Essencialmente, desde que o elemento não seja position: static
(a configuração padrão), ele será considerado posicionado e z-index
funcionará.
Muitas respostas para "Por que o z-index não está funcionando?" perguntas afirmam que z-index
só funciona em elementos posicionados. A partir do CSS3, isso não é mais verdade.
Elementos que são itens flexíveis ou itens de grade podem usar z-index
mesmo quando position
são static
.
Das especificações:
4.3 Pedido Z de item flexível
Os itens flexíveis pintam exatamente da mesma forma que os blocos embutidos, exceto que a ordem de documento modificada por ordem é usada no lugar da ordem bruta de documento e z-index
valores diferentes de auto
criar um contexto de empilhamento, mesmo que position
seja static
.
5.4 Ordenação do eixo Z: a z-index
propriedade
A ordem de pintura dos itens da grade é exatamente igual aos blocos embutidos, exceto que a ordem de documento modificada pela ordem é usada no lugar da ordem bruta de documento e z-index
valores diferentes de auto
criar um contexto de empilhamento, mesmo que
position
seja static
.
Aqui está uma demonstração do z-index
trabalho em itens flexíveis não posicionados: https://jsfiddle.net/m0wddwxs/
Stacking Context
.