Galeri dengan Lightbox
Klik foto untuk melihat versi besar mengambang dengan navigasi antar foto.
Apa Itu Lightbox?
Lightbox adalah "ruang gelap" untuk melihat foto: klik thumbnail, layar meredup, foto tampil besar di tengah. Kamu bisa pindah ke foto berikutnya tanpa menutup. Ini standar di portofolio fotografer dan galeri produk.
Langkah Membangun
HTML: Grid thumbnail seperti modul galeri, plus satu lightbox: <div class="lightbox"> berisi tombol tutup, tombol prev/next, <img> besar, dan caption.
CSS: Lightbox memakai position: fixed; inset: 0 dengan background hitam 90 persen, disembunyikan default. Gambar besar dibatasi max-width: 90vw; max-height: 80vh agar muat di semua layar. Tombol navigasi di kiri-kanan gambar.
JS: Ini gabungan pola modal + carousel:
- Klik thumbnail ke-i: simpan indeks, isi src gambar besar, tampilkan lightbox.
- Prev/next: ubah indeks dengan modulo (loop).
- Tutup: tombol ×, klik area gelap, atau Escape.
- Bonus: navigasi keyboard dengan panah kiri/kanan.
Kesalahan Umum
- Gambar besar loading lambat (pakai versi gambar lebih besar tapi tetap wajar, misal 1200px).
- Scroll body ikut jalan di belakang lightbox (kunci dengan overflow hidden seperti modal).
- Indeks tidak sinkron antara thumbnail dan lightbox (simpan satu variabel indeks sebagai sumber kebenaran).
export default function App(): JSX.Element { return <h1>Hello world</h1> }
Tantangan
Tantangan: Preload Gambar
Agar pindah foto terasa instan, preload gambar berikutnya dan sebelumnya setiap kali lightbox menampilkan foto. Pakai objek Image() JavaScript.