CSS Eu quero que um div esteja por dentro de tudo

Respostas:

120

Para que o Z-index funcione, você precisará fornecer ao elemento a position:absoluteou uma position:relativepropriedade. Depois de fazer isso, seus links funcionarão corretamente, embora você possa ter que ajustar seu CSS um pouco depois.

Skylar Anderson
fonte
Eu queria usar um esquema fixo e por isso mantive a posição fixa, mas ainda configurei o z-index para 1000 e obtive os resultados desejados, ele cobriu uma div inferior na página conforme eu rolei, você pode explicar por que isso aconteceu, embora Eu estava usando uma posição estática?
Boo89100
37

Para z-index:1000ter um efeito, você precisa de um esquema de posicionamento não estático.

Adicione position:relative;a uma regra selecionando o elemento que você deseja que esteja no topo

Richard JP Le Guen
fonte
24

Sim, para que o Z-index funcione, você precisará fornecer ao elemento uma propriedade position: absolute ou position: relative.

Mas ... preste atenção aos pais!

Você tem que subir os nós dos elementos para verificar se no nível do pai comum os primeiros descendentes têm um índice z definido.

Todos os outros descendentes nunca podem estar em primeiro plano se na base houver um índice z definido inferior.

Neste exemplo de snippet, div1-2-1 tem um z-index de 1000, mas está sob o div1-1-1 que tem um z-index de 3.

Isso ocorre porque div1-1 tem um índice z maior que div1-2.

insira a descrição da imagem aqui

.div {
  
}

#div1 {
  z-index: 1;
  position: absolute;
  width: 500px;
  height: 300px;
  border: 1px solid black;
}

#div1-1 {
  z-index: 2;
  position: absolute;
  left: 230px;
  width: 200px;
  height: 200px;
  top: 31px;
  background-color: indianred;
}

#div1-1-1 {
  z-index: 3;
  position: absolute;
  top: 50px;
  width: 100px;
  height: 100px;
  background-color: burlywood;
}

#div1-2 {
  z-index: 1;
  position: absolute;
  width: 200px;
  height: 200px;
  left: 80px;
  top: 5px;
  background-color: red;
}

#div1-2-1 {
  z-index: 1000;
  position: absolute;
  left: 70px;
  width: 120px;
  height: 100px;
  top: 10px;
  color: red;
  background-color: lightyellow;
}

.blink {
  animation: blinker 1s linear infinite;
}

@keyframes blinker {
  50% {
    opacity: 0;
  }
}

.rotate {
  writing-mode: vertical-rl;
  padding-left: 50px;
  font-weight: bold;
  font-size: 20px;
}
<div class="div" id="div1">div1</br>z-index: 1
  <div class="div" id="div1-1">div1-1</br>z-index: 2
    <div class="div" id="div1-1-1">div1-1-1</br>z-index: 3</div>
  </div>
  
  <div class="div" id="div1-2">div1-2</br>z-index: 1</br><span class='rotate blink'><=</span>
    <div class="div" id="div1-2-1"><span class='blink'>z-index: 1000!!</span></br>div1-2-1</br><span class='blink'> because =></br>(same</br>   parent)</span></div>
  </div>
</div>

A. Morel
fonte
Você é um salva-vidas!
Benjamin Karlog de
16

Você precisa adicionar position:relative;ao menu. O Z-index só funciona quando você tem um esquema de posicionamento não estático.

Rich Bradshaw
fonte
9

z-indexpropriedade permite que você assuma o controle na frente. quanto maior o número que você definir, mais alto será o seu elemento.

positionpropriedade deve ser relativeporque a posição de html-elementdeve ser relativamente contra outros controles em todas as dimensões.

element.style {
   position:relative;
   z-index:1000; //change your number as per elements lies on your page.
}
Vikrant Kashyap
fonte
4

Vou presumir que você está fazendo um pop-up com o código da escola WW3, correto? verifique css. o .modal, já tem boato z-indexaí. apenas mude de 1 para 100.

.modal {
    display: none; /* Hidden by default */
    position: fixed; /* Stay in place */
    z-index: 1; /* Sit on top */
    padding-top: 100px; /* Location of the box */
    left: 0;
    top: 0;
    width: 100%; /* Full width */
    height: 100%; /* Full height */
    overflow: auto; /* Enable scroll if needed */
    background-color: rgb(0,0,0); /* Fallback color */
    background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
}
KhmerNews Tech
fonte