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.


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źć


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>


Jesteś ratownikiem!
Benjamin Karlog

16

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


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.
}

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 */
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.