CSS Positioning Overflow Stacking Context
Selesai membaca dokumentasi ini?
Kembali ke rujukan utama CSS untuk melanjutkan topik lainnya.
Kembali ke rujukan utama CSS untuk melanjutkan topik lainnya.
position, z-index, overflow, dan stacking context adalah empat konsep CSS yang sangat sering dipakai saat debug layout.
Kalau disederhanakan:
position menentukan bagaimana elemen ditempatkan.z-index menentukan urutan tumpukan di sumbu depan-belakang, tapi hanya bekerja dalam aturan stacking context.overflow menentukan apa yang terjadi saat isi elemen lebih besar daripada kotaknya.z-index dihitung.Masalah layout seperti elemen tertutup, dropdown hilang di belakang komponen lain, tooltip kepotong, atau sticky tidak bergerak biasanya bukan satu bug tunggal. Seringnya, itu gabungan dari posisi, tumpukan, dan batas overflow.
Konsep ini dipakai untuk:
z-index: 9999 kadang tetap kalahUrutan berpikir yang aman saat debug adalah:
z-index yang relevan di konteksnya?overflow dari ancestor?position mengubah cara browser menghitung letak elemen.z-index hanya efektif pada elemen yang membentuk konteks tumpukan yang relevan.overflow bisa memotong isi, termasuk popup, tooltip, dan bayangan visual tertentu.z-index dari luar.position: static, relative, absolute, fixed, stickyposition: staticIni adalah nilai default.
Ciri utamanya:
top, right, bottom, left, dan z-index tidak memberi efek visual yang diharapkanPakai ini saat tidak ada kebutuhan positioning khusus.
position: relativeElemen tetap berada di alur normal, tetapi bisa digeser secara visual dengan offset.
Ciri penting:
absoluteContoh umum:
.badge-wrap {
position: relative;
}
.badge {
position: absolute;
top: 0;
right: 0;
}Di sini, relative bukan untuk memindahkan wrapper secara besar-besaran, tapi untuk memberi titik referensi pada anak absolute.
position: absoluteElemen keluar dari normal flow.
Ciri penting:
Pakai ini untuk:
Jebakan umum:
position: relativeabsolute tetap memengaruhi layout saudara elemenposition: fixedElemen diposisikan relatif ke viewport.
Ciri penting:
Catatan penting:
position: stickySticky adalah gabungan perilaku relatif dan fixed.
Ciri penting:
top: 0Contoh:
.sidebar-title {
position: sticky;
top: 0;
z-index: 10;
}Sticky sangat berguna untuk header tabel, label sidebar, atau section title yang ingin tetap terlihat saat scroll.
position| Nilai | Masuk normal flow | Bisa offset | Referensi umum | Kasus umum |
|---|---|---|---|---|
static | Ya | Tidak efektif | Alur dokumen | Default |
relative | Ya | Ya | Posisi aslinya sendiri | Nudge kecil, parent referensi |
absolute | Tidak | Ya | Ancestor terdekat yang diposisikan | Badge, dropdown, overlay |
fixed | Tidak | Ya | Viewport | Header tetap, FAB, toast |
sticky | Ya, lalu menempel | Ya | Scroll container / viewport | Header sticky, sidebar |
z-index dan urutan lapisanz-index mengatur urutan elemen yang saling bertumpuk.
Namun ada batasnya:
z-index tidak bekerja seperti angka mutlak di seluruh halamanz-index: 9999 tetap bisa kalah dari elemen luar konteksnyaz-index bekerjaBiasanya pada elemen yang:
position-nya bukan static pada banyak kasus umumz-index terasa “tidak mempan”Penyebab paling sering:
transform, opacity < 1, filter, isolation, will-change, contain, atau properti lain yang membentuk konteks baruoverflow: hidden/auto/scrollStacking context adalah sistem lapisan lokal. Begitu sebuah elemen membentuk stacking context, semua anaknya diperingkat di dalam konteks itu dulu sebelum dibandingkan dengan elemen luar.
Bayangkan seperti folder tumpukan:
Yang paling sering ditemui:
<html>)position tertentu dan z-index selain autoopacity kurang dari 1transformfilter, perspective, clip-path, maskisolation: isolatecontain: paint atau kombinasi containment tertentuKalau popup terlihat kalah lapisan, pertanyaan utamanya bukan langsung “naikkan z-index berapa?”. Pertanyaan yang benar:
overflow mengatur apakah isi yang melebihi kotak elemen akan ditampilkan penuh, dipotong, atau dibuat scroll.
overflow: visibleIsi yang meluber tetap terlihat.
Cocok kalau:
overflow: hiddenIsi yang keluar dari kotak dipotong.
Cocok untuk:
Jebakan umum:
overflow: autoScrollbar muncul jika dibutuhkan.
Cocok untuk:
overflow: scrollScrollbar disediakan walau isi belum tentu meluber.
Dipakai lebih jarang karena lebih agresif.
overflow: clipMemotong isi tanpa membuat area scroll seperti hidden.
Ini berguna saat benar-benar ingin membatasi tampilan tanpa scrolling internal.
Elemen terlihat tertutup jika:
Elemen terlihat meluber jika:
overflow dibiarkan visibleIni biasanya kombinasi:
overflow: hidden/clip/auto/scrollGejala:
Cek:
overflow: hidden?Gejala:
Cek:
z-index di konteks yang benar?transform atau opacity pada ancestor?Gejala:
Cek:
top: 0 atau offset lain?Diagram berikut membantu melihat posisi, tumpukan, dan batas area secara bersamaan.
::preview
position: relative lalu anak absolute.top: 0.z-index besar sebagai solusi tunggal.z-index: 9999 selalu menang.z-index dibandingkan di dalam stacking context.absolute tanpa ancestor referensi yang tepat.overflow: hidden lalu heran dropdown terpotong.sticky akan bekerja di semua container scroll.fixed tapi lupa bahwa konteks visual di sekitar bisa tetap memengaruhi layering.