Então, se eu entendi z-index
direito, seria perfeito nessa situação:
Quero colocar a imagem inferior (a etiqueta / cartão) abaixo da div acima dela. Então você não pode ver as arestas afiadas. Como eu faço isso?
z-index:-1 // on the image tag/card
ou
z-index:100 // on the div above
também não funciona. Nem uma combinação de algo assim. Por quê?
Stacking Context
.position: relative
para z-index para o trabalho, apesar de elementos que se comportam de outras maneiras relativos por padrãostatic
elementos são estáticos e não podem se moverx, y or z planes
. Eles não podem se mudarx plane (left or right)
ouy plane (top or bottom)
gostam quando trabalhamosposition: absolute
. E nem eles podem se mudarz plane i.e. with z-index
.z-index
de um elemento de grade?Se você definir a posição com outro valor,
static
mas o elementoz-index
ainda não parecer funcionar, pode ser que algum elemento pai tenha sidoz-index
definido.Os contextos de empilhamento têm hierarquia e cada contexto de empilhamento é considerado na ordem de empilhamento do contexto de empilhamento do pai.
Então, com o seguinte html
Não importa quão grande a
z-index
deel3
será definido, será sempre sobel1
porque os pais tem menor contexto de empilhamento. Você pode imaginar a ordem de empilhamento como níveis em que a ordem de empilhamentoel3
é, na verdade, 3,8, que é menor que 5 .Se você deseja verificar os contextos de empilhamento dos elementos pai, pode usar isto:
Há um ótimo artigo sobre o empilhamento de contextos no MDN
fonte
Seus elementos precisam ter um
position
atributo. (por exemploabsolute
,relative
,fixed
) ouz-index
não funcionará.fonte
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
eposition: sticky
também permitiráz-index
, mas esses valores também mudar o layout. Composition: 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 ez-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 quandoposition
sãostatic
.Das especificações:
Aqui está uma demonstração do
z-index
trabalho em itens flexíveis não posicionados: https://jsfiddle.net/m0wddwxs/fonte
position: static
exatamente o mesmo que tratariaposition: relative
para itens flexíveis e de grade devido à natureza dinâmica desses métodos de layout. Então, talvez eu diga que não é mais verdade no CSS3 que um elemento precisa ser posicionado, mas que o CSS3 trata os itens flex e grid como se estivessem posicionados, independentemente. Apenas duas maneiras de olhar para a mesma coisa, provavelmente.position:relative
. Descendentes de itens flexíveis com posição absoluta não consideram o item flexível como seu bloco de contenção porque o item flexível não está posicionado. ( jsfiddle.net/0yo7utfL/2 )overflow-y: scroll
impedeoverflow-x: visible
de funcionar ... você pode dar uma olhada?