Position — CSS

Coba scroll halaman web mana aja. Header yang nempel di atas walau kamu scroll? Tombol "Back to Top" yang mengikuti di pojok kanan bawah? Modal popup yang muncu

Coba scroll halaman web mana aja. Header yang nempel di atas walau kamu scroll? Tombol "Back to Top" yang mengikuti di pojok kanan bawah? Modal popup yang muncul nge-overlay halaman? Semua sihir itu kerjaan properti position. Default-nya tiap elemen ngalir ngikutin alur dokumen biasa, tapi position bisa "lepasin" elemen dari alur dan taruh di mana aja yang kamu mau.

💡 Bug klasik: fixed di dalam transform. position: fixed SEHARUSNYA nempel di viewport. Tapi kalau ancestor punya transform, filter, atau will-changefixed malah nempel ke ancestor itu, bukan viewport. Kelihatan kayak bug, tapi sesuai spec. Kasus ini sering bikin modal "ke-trap" di dalam container — selalu cek ancestor punya transform gak.

Lima nilai position:

<title id="pos-t">Lima nilai position: static, relative, absolute, fixed, sticky.</title>staticalur normalrelativegeser dari diri sendiriabsolutekeluar alurfixednempel viewportstickyscroll-aware
Kuning = relative geser dari spotnya. Merah = absolute lepas alur. Ungu = fixed nempel viewport. Hijau = sticky.

Berikut contoh penggunaan properti position:

position: absolute;
top: 20px; left: 20px;

🎭 Analogi sehari-hari

position = aturan parkir mobil:

⚠️ Jebakan yang sering ditemui

TL;DR: position ngatur cara elemen "berada" di halaman. static (default) ngalir biasa. relative geser sedikit dari spot biasa. absolute lepas alur, ngacu ke parent positioned terdekat. fixed nempel viewport. sticky hybrid — alur biasa sampai batas scroll, terus nempel.

🎯 Pilih position apa?

  • Header yang nempel di atas walau scroll → sticky (atau fixed kalau gak peduli alur)
  • Modal/popup yang nge-overlay seluruh halaman → fixed
  • Tooltip/badge yang nempel di sudut elemen lain → absolute (parent-nya relative)
  • Geser sedikit dari spot biasa tanpa ganggu layout → relative
  • Default tiap elemen → static

Aturan emas: 80% pakai static (default). 15% relative buat anchor absolute child. Sisanya fixed/sticky/absolute di kasus spesifik.

Yang akan kamu pelajari