Floating Action Button
Elevated circular button anchored to the viewport for the screen's primary action.
Single Action — Ukuran
FAB standar menggunakan btn btn-circle dari DaisyUI.
Ukuran md (default, 48px) adalah pilihan utama — gunakan lg hanya untuk aksi yang benar-benar dominan.
Posisi — Bottom-right (simulasi viewport)
Dalam produksi gunakan fixed bottom-6 right-6 z-[var(--z-fixed)].
Di bawah ini disimulasikan dalam frame relatif.
Light
Dark
Speed Dial — Expand ke Beberapa Aksi
Satu FAB utama membuka beberapa aksi sekunder. Alpine.js mengatur state open.
Animasi stagger dikendalikan lewat CSS custom property per-item agar tidak perlu JS manual per elemen.
Dengan Badge Count
Badge notifikasi di pojok kanan-atas FAB. Posisi absolute
mengacu pada wrapper relative.
Scroll-hide — Sembunyikan saat Scroll Turun
FAB tersembunyi saat pengguna scroll ke bawah (menunjukkan sedang browsing) dan muncul kembali saat scroll ke atas (siap untuk aksi).
Alpine.js melacak lastY vs currentY — scroll di dalam frame simulasi di bawah.
Panduan Penggunaan
<button class="btn btn-primary btn-circle
fixed bottom-6 right-6
z-[var(--z-fixed)]">
<!-- icon -->
</button>
x-data="{
visible: true, lastY: 0
}"
@scroll.window="
visible = scrollY < lastY
|| scrollY < 40;
lastY = scrollY
"
:class="visible
? 'opacity-100 scale-100'
: 'opacity-0 scale-75
pointer-events-none'"
- Aksi paling utama di layar (1 per layar)
- Buat baru, compose, tambah item
- Jangan pakai untuk navigasi atau destructive action
- Mobile: bottom-right; Desktop: bottom-right juga cukup
Aksesibilitas
Selalu sertakan aria-label yang deskriptif karena FAB hanya menampilkan ikon.
Untuk speed dial, tambahkan aria-expanded pada tombol utama
dan aria-haspopup="true".