CSS Chcę, aby nad wszystkim był element div

Odpowiedzi:

120

Aby indeks z działał, musisz nadać elementowi a position:absolutelub position:relativewłaściwość. Gdy to zrobisz, Twoje linki będą działały poprawnie, chociaż może być później konieczne poprawienie CSS.

Skylar Anderson
źródło
Chciałem użyć stałego schematu, więc utrzymałem pozycję jako stałą, ale nadal ustawiłem indeks Z na 1000 i uzyskałem pożądane wyniki, obejmował div niżej na stronie podczas przewijania, czy możesz wyjaśnić, dlaczego tak się stało, mimo że Używałem pozycji statycznej?
Boo89100
37

Aby z-index:1000uzyskać efekt, potrzebny jest niestatyczny schemat pozycjonowania.

Dodaj position:relative;do reguły, wybierając element, na którym chcesz się znaleźć

Richard JP Le Guen
źródło
24

Tak, aby z-index działał, musisz nadać elementowi właściwość pozycja: bezwzględna lub pozycja: względna.

Ale ... uwaga na rodziców!

Musisz wejść w górę węzłów elementów, aby sprawdzić, czy na poziomie wspólnego rodzica pierwsi potomkowie mają zdefiniowany indeks z.

Wszyscy inni potomkowie nigdy nie mogą znajdować się na pierwszym planie, jeśli u podstawy występuje niższy określony indeks z.

W tym przykładzie fragmentu div1-2-1 ma indeks z równy 1000, ale mimo to znajduje się pod elementem div1-1-1, który ma indeks z równy 3.

Dzieje się tak, ponieważ div1-1 ma indeks z większy niż div1-2.

wprowadź opis obrazu tutaj

.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
źródło
Jesteś ratownikiem!
Benjamin Karlog
16

Musisz dodać position:relative;do menu. Indeks Z działa tylko wtedy, gdy masz niestatyczny schemat pozycjonowania.

Rich Bradshaw
źródło
9

z-indexwłaściwość umożliwia przejęcie kontroli z przodu. im większa liczba ustawisz, tym wyższy element otrzymasz.

positionwłaściwość powinna być, relativeponieważ pozycja html-elementpowinna być położona względem innych kontrolek we wszystkich wymiarach.

element.style {
   position:relative;
   z-index:1000; //change your number as per elements lies on your page.
}
Vikrant Kashyap
źródło
4

Zakładam, że robisz wyskakujące okienko z kodem ze szkoły z III wojny światowej, prawda? sprawdź to css. ten .modalny, jest tam już słowo z-index. po prostu zmień z 1 na 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
źródło