← Kembali ke kursus
Pelajaran kursus · CSS
Pelajaran 16

z-index dan susunan lapisan

Atur elemen mana tampil di atas ketika bertumpuk.

Pahami konsepnya

Saat elemen bertumpang tindih (karena position absolute/fixed atau margin negatif), z-index memutuskan siapa di atas: nilainya bilangan bulat bebas — elemen bernilai lebih tinggi menang, dan elemen tanpa z-index berdiri di urutan kode (yang belakangan menimpa). Pasangannya wajib: z-index hanya berlaku pada elemen ber-position selain static (atau elemen flex/grid anak).

Kenyataan pahitnya: z-index bukan satu tangga global. Elemen dengan position sekaligus z-index menciptakan "stacking context" — dunia lapisan tersendiri yang anak-anaknya hanya bertarung di dalamnya. Navbar z-index 999 bisa kalah oleh modal z-index 1 jika modal hidup di dalam induk ber-z-index lebih tinggi. Gejala "kenapa z-index 9999-ku kalah" hampir selalu berakar pada konteks bersarang ini.

Kebiasaan sehat: gunakan nilai bertingkat konsisten (10 dropdown, 100 navbar, 1000 modal, 2000 toast) dan kendalikan sedikit induk mungkin. Semakin sedikit elemen yang membuat stacking context, semakin bisa diprediksi lapisanmu — dan semakin jarang kamu berdialog dengan z-index: 99999.

Coba contoh kode

.navbar {
  position: fixed;
  z-index: 100;   /* tingkat: navigasi */
}

.dropdown {
  position: absolute;
  z-index: 110;   /* sedikit di atas navbar */
}

.modal {
  position: fixed;
  z-index: 1000;  /* tingkat: jendela modal */
}

.toast {
  position: fixed;
  z-index: 2000;  /* tingkat: notifikasi teratas */
}

Tangga bertingkat (10-100-1000-2000) memberi ruang untuk sisipan di masa depan — dropdown baru cukup ambil 120, tak perlu perang angka. Perhatikan semua peserta ber-position: z-index tanpa position pada elemen static hanyalah angka kesepian yang tak didengar siapa pun.

Latihan singkat

Bangun tiga lapis (kartu, dropdown di dalam kartu, modal global) dengan tangga z-index yang rapi, lalu uji menempatkan modal di dalam induk ber-z-index rendah untuk melihat gejala konteks bersarang.