Dropdown Menu
Menu yang muncul saat tombol diklik dan tertutup otomatis saat klik di luar.
Apa Itu Dropdown?
Dropdown adalah menu tersembunyi yang muncul saat dipicu, seperti menu "Pilih Bahasa" atau menu profil di pojok kanan aplikasi. Ini menghemat ruang layar: puluhan pilihan disembunyikan di balik satu tombol.
Langkah Membangun
HTML: <div class="dropdown"> berisi <button> pemicu dan <ul class="isi"> daftar pilihan yang awalnya tersembunyi.
CSS: Kontainer dropdown memakai position: relative, daftarnya position: absolute sehingga muncul melayang di bawah tombol tanpa menggeser konten lain. Daftar disembunyikan dengan display: none, ditampilkan saat punya class buka (display: block) plus animasi fade-slide kecil.
JS: Ada dua listener penting:
- Klik tombol: toggle class
buka. - Klik di mana saja pada dokumen: kalau klik BUKAN di dalam dropdown, tutup dropdown. Caranya:
document.addEventListener("click", ...)lalu cek!dropdown.contains(e.target).
Pola "klik di luar untuk menutup" ini dipakai di hampir semua komponen popup (modal, tooltip, date picker).
Kesalahan Umum
- Lupa
stopPropagationatau cek contains sehingga dropdown langsung tertutup begitu dibuka (klik tombol juga dihitung sebagai klik dokumen). - Dropdown terpotong oleh kontainer yang punya
overflow: hidden. - Tidak bisa diakses keyboard (tambahkan penanganan tombol Escape untuk menutup).
export default function App(): JSX.Element { return <h1>Hello world</h1> }
Tantangan
Tantangan: Dropdown Multi-Level
Tambahkan submenu di dalam "English": saat di-hover, muncul pilihan "American" dan "British" mengambang ke kanan. Ini pola menu bertingkat seperti di aplikasi desktop.