Membuat Gallery Gambar dengan Grid dan Modal Bootstrap

By | 13 November 2025

Membuat gallery gambar dengan grid dan modal Bootstrap adalah cara mudah untuk menampilkan koleksi foto atau portofolio secara menarik dan responsif. Dengan bantuan framework Bootstrap, Anda dapat menyusun gambar dalam layout grid yang rapi serta menambahkan efek popup menggunakan modal, sehingga pengunjung bisa melihat gambar dengan ukuran lebih besar tanpa meninggalkan halaman. Dalam tutorial ini, kita akan membahas langkah demi langkah bagaimana cara membuat gallery gambar menggunakan grid dan modal Bootstrap — lengkap dengan contoh kode dan tips optimasi agar tampil profesional di semua perangkat.

Mengapa Menggunakan Bootstrap untuk Gallery Gambar

Bootstrap adalah salah satu framework CSS paling populer di dunia karena menyediakan sistem grid yang fleksibel serta berbagai komponen siap pakai seperti modal, card, dan responsive image.

Berikut beberapa alasan mengapa Bootstrap cocok untuk membuat gallery gambar:

  1. Responsif secara otomatis: Gambar menyesuaikan ukuran layar tanpa perlu CSS tambahan.

  2. Desain modern: Menggunakan sistem grid membuat tampilan lebih rapi dan profesional.

  3. Interaktif: Komponen modal dapat menampilkan gambar penuh tanpa plugin tambahan.

  4. Mudah digunakan: Cukup dengan HTML dan class Bootstrap, gallery sudah bisa berfungsi.

  5. Dukungan komunitas besar: Banyak dokumentasi dan contoh kode yang bisa dijadikan referensi.

Dengan semua keunggulan tersebut, membuat gallery gambar menggunakan Bootstrap menjadi solusi cepat dan efisien untuk website bisnis, portofolio, atau blog fotografi Anda.

Struktur Dasar Gallery Gambar di Bootstrap

Sebelum masuk ke pembuatan gallery, mari pahami dulu struktur grid di Bootstrap:

Bootstrap menggunakan 12 kolom dalam setiap baris (.row). Dengan mengatur lebar kolom menggunakan class seperti .col-md-4 atau .col-sm-6, Anda bisa menentukan berapa banyak gambar per baris di berbagai ukuran layar.

Contoh layout dasar gallery grid:

<div class="container mt-5">
  <div class="row">
    <div class="col-md-4 col-sm-6 mb-4">
      <img src="images/photo1.jpg" class="img-fluid rounded shadow" alt="Gallery 1">
    </div>
    <div class="col-md-4 col-sm-6 mb-4">
      <img src="images/photo2.jpg" class="img-fluid rounded shadow" alt="Gallery 2">
    </div>
    <div class="col-md-4 col-sm-6 mb-4">
      <img src="images/photo3.jpg" class="img-fluid rounded shadow" alt="Gallery 3">
    </div>
  </div>
</div>

Penjelasan kode:

  • .container menjaga agar isi tetap rapi di tengah halaman.

  • .row membuat baris grid.

  • .col-md-4 membagi halaman menjadi 3 kolom di layar desktop.

  • .img-fluid membuat gambar otomatis menyesuaikan ukuran layar.

  • .rounded dan .shadow menambah efek visual lembut.

Menambahkan Fitur Modal untuk Gambar

Langkah berikutnya adalah menambahkan modal agar setiap gambar bisa diperbesar saat diklik.

Berikut contoh sederhana:

<!-- Gallery -->
<div class="container mt-5">
  <div class="row">
    <div class="col-md-4 col-sm-6 mb-4">
      <img src="images/photo1.jpg" class="img-fluid rounded shadow" alt="Gallery 1" data-bs-toggle="modal" data-bs-target="#modal1">
    </div>
    <div class="col-md-4 col-sm-6 mb-4">
      <img src="images/photo2.jpg" class="img-fluid rounded shadow" alt="Gallery 2" data-bs-toggle="modal" data-bs-target="#modal2">
    </div>
    <div class="col-md-4 col-sm-6 mb-4">
      <img src="images/photo3.jpg" class="img-fluid rounded shadow" alt="Gallery 3" data-bs-toggle="modal" data-bs-target="#modal3">
    </div>
  </div>
</div>

<!-- Modal 1 -->
<div class="modal fade" id="modal1" tabindex="-1" aria-hidden="true">
  <div class="modal-dialog modal-dialog-centered modal-lg">
    <div class="modal-content bg-dark">
      <div class="modal-body p-0">
        <img src="images/photo1.jpg" class="img-fluid w-100" alt="Gallery 1">
      </div>
    </div>
  </div>
</div>

Penjelasan kode:

  • Atribut data-bs-toggle="modal" dan data-bs-target="#modal1" menautkan gambar ke modal yang sesuai.

  • Class .modal-dialog-centered dan .modal-lg membuat tampilan modal besar dan terpusat.

  • .bg-dark dan .w-100 memastikan tampilan elegan dengan gambar memenuhi layar.

Untuk setiap gambar, Anda bisa membuat modal sendiri atau membuat satu modal dinamis dengan JavaScript (dibahas nanti).

Membuat Modal Dinamis Menggunakan JavaScript

Agar lebih efisien, kita tidak perlu membuat banyak modal. Cukup satu modal yang bisa menampilkan gambar sesuai yang diklik pengguna.

Berikut contoh kodenya:

<!-- Gallery -->
<div class="container mt-5">
  <div class="row">
    <div class="col-md-4 col-sm-6 mb-4">
      <img src="images/photo1.jpg" class="img-fluid rounded shadow gallery-item" alt="Gallery 1">
    </div>
    <div class="col-md-4 col-sm-6 mb-4">
      <img src="images/photo2.jpg" class="img-fluid rounded shadow gallery-item" alt="Gallery 2">
    </div>
    <div class="col-md-4 col-sm-6 mb-4">
      <img src="images/photo3.jpg" class="img-fluid rounded shadow gallery-item" alt="Gallery 3">
    </div>
  </div>
</div>

<!-- Modal -->
<div class="modal fade" id="imageModal" tabindex="-1" aria-hidden="true">
  <div class="modal-dialog modal-dialog-centered modal-lg">
    <div class="modal-content bg-dark">
      <div class="modal-body p-0">
        <img src="" class="img-fluid w-100" id="modalImage" alt="Preview">
      </div>
    </div>
  </div>
</div>

<!-- Script -->
<script>
document.querySelectorAll('.gallery-item').forEach(item => {
  item.addEventListener('click', function() {
    const src = this.getAttribute('src');
    document.getElementById('modalImage').setAttribute('src', src);
    const modal = new bootstrap.Modal(document.getElementById('imageModal'));
    modal.show();
  });
});
</script>

Keuntungan modal dinamis:

  • Lebih efisien karena hanya satu modal untuk semua gambar.

  • Lebih mudah dikelola dan tidak menambah ukuran halaman.

Tips Desain Gallery Gambar yang Profesional

  1. Gunakan rasio gambar yang konsisten
    Agar grid terlihat rapi, pastikan semua gambar memiliki ukuran atau rasio yang sama.

  2. Tambahkan efek hover
    Gunakan efek seperti zoom atau overlay:

    .gallery-item:hover {
      transform: scale(1.05);
      transition: 0.3s;
      cursor: pointer;
    }
    
  3. Optimasi ukuran gambar
    Kompres gambar sebelum di-upload agar halaman tidak lambat saat dimuat.

  4. Gunakan lazy loading
    Tambahkan atribut loading="lazy" pada tag <img> agar gambar hanya dimuat saat terlihat di layar.

  5. Tambahkan caption jika perlu
    Gunakan elemen <figcaption> atau overlay teks untuk menampilkan judul gambar.

Menambahkan Filter Kategori (Opsional)

Jika Anda ingin membuat gallery lebih interaktif, tambahkan fitur filter kategori dengan sedikit JavaScript.

Contoh tombol filter sederhana:

<div class="text-center mb-4">
  <button class="btn btn-outline-primary filter" data-filter="all">Semua</button>
  <button class="btn btn-outline-primary filter" data-filter="nature">Alam</button>
  <button class="btn btn-outline-primary filter" data-filter="city">Kota</button>
</div>

Dan tambahkan atribut kategori pada gambar:

<img src="images/photo1.jpg" class="img-fluid gallery-item" data-category="nature">

Lalu JavaScript-nya:

const filters = document.querySelectorAll('.filter');
const items = document.querySelectorAll('.gallery-item');

filters.forEach(filter => {
  filter.addEventListener('click', () => {
    const category = filter.getAttribute('data-filter');
    items.forEach(item => {
      item.style.display = category === 'all' || item.dataset.category === category ? 'block' : 'none';
    });
  });
});

Dengan ini, pengguna bisa melihat gambar sesuai kategori yang dipilih tanpa reload halaman.

Kesimpulan

Membuat gallery gambar dengan grid dan modal Bootstrap adalah solusi praktis untuk menampilkan koleksi foto secara elegan dan responsif. Dengan sistem grid, gambar tersusun rapi di semua ukuran layar, sedangkan fitur modal membuat interaksi pengguna lebih menarik.

Baik Anda seorang fotografer, desainer, atau pengembang web, teknik ini sangat berguna untuk meningkatkan tampilan dan pengalaman pengguna di situs Anda.

Dengan tambahan sedikit JavaScript dan CSS, gallery Anda bisa tampil profesional, ringan, dan interaktif — tanpa memerlukan plugin tambahan.