Z-Index — CSS

Z-index adalah properti CSS yang mengatur urutan tumpukan elemen — angka lebih besar tampil makin di depan, menutupi elemen dengan angka lebih kecil…

Kalau dua elemen menempati tempat yang sama, salah satunya pasti menutupi yang lain. Bayangin beberapa lembar kertas yang ditumpuk di meja: lembar paling atas kelihatan utuh, lembar di bawahnya ketutup sebagian. z-index adalah nomor lapisan buat tiap elemen di tumpukan itu: makin besar angkanya, makin atas posisinya.

🧪 Tebakan cepat: div { z-index: 999; }, tanpa properti lain. Div-nya naik ke paling atas gak? Tebak dulu, jawabannya ada di bagian "Syaratnya: position".

Angka besar di atas, angka kecil di bawah

Dua kotak ini sengaja dibikin saling menimpa:

<div class="merah">merah</div>
<div class="hijau">hijau</div>

<style>
div {
  width: 120px;
  height: 80px;
}
.merah {
  position: relative;
  z-index: 4;
  background: red;
}
.hijau {
  position: absolute;
  top: 60px;
  left: 80px;
  z-index: 3;
  background: green;
}
</style>

Hasilnya, bagian yang tumpang tindih menampilkan kotak merah, dan kotak hijau ketutup di bagian itu. Kalau dua elemen gak punya z-index, atau angkanya sama, yang ditulis belakangan di HTML yang tampil di atas. Jadi buat menang, angkanya harus lebih besar, gak cukup sama.

Syaratnya: position

z-index cuma berlaku buat elemen yang position-nya bukan static, misalnya relative atau absolute. Semua elemen mulai dengan position: static, jadi div { z-index: 999; } gak ngapa-ngapain. Itu jawaban tebakannya: gak naik. Perbaikannya, tambahkan position:

div {
  position: relative;
  z-index: 999;
}

Di latihan, kotak yang mau kamu naikkan sudah punya position: absolute. Kamu tinggal menambah satu baris z-index di aturan yang sama, dengan angka lebih besar dari kotak yang sekarang menutupinya.

⚠️ Jebakan yang sering ketemu

💡 Satu pengecualian. Anak langsung dari flexbox atau grid bisa pakai z-index walau position-nya masih static.

TL;DR: z-index adalah nomor lapisan: angka lebih besar tampil di atas angka lebih kecil, dan kalau sama, yang ditulis belakangan menang. Dia cuma jalan di elemen yang position-nya bukan static, jadi pasangkan dengan position: relative atau absolute. Anak gak bisa menembus tumpukan induknya yang punya z-index sendiri.

Yang akan kamu pelajari