• Home
  • About
  • Terms of Service
  • Daftar Isi
  • Kebijakan Privasi
  • Hubungi Kami

Belajar Teknologi

Belajar dan Sharing Ilmu Teknologi

Belajar CSS Flexbox dan Grid: Layout Modern dengan Contoh Praktis

07/11/2026 by ramzilhuda

Mengatur tata letak halaman web dulu adalah pekerjaan yang menyebalkan. Developer zaman dulu memakai float dan clearfix yang rapuh, atau tabel yang tidak semestinya dipakai untuk layout. Untungnya era itu sudah berakhir. Panduan CSS Flexbox dan Grid ini akan mengajarkanmu dua sistem layout modern bawaan CSS yang membuat penyusunan halaman menjadi jauh lebih masuk akal: Flexbox untuk layout satu dimensi dan Grid untuk layout dua dimensi.

Di akhir artikel ini kamu akan bisa membuat dua komponen paling umum di web modern: deretan kartu produk yang rapi dan navbar responsif yang menyesuaikan layar HP. Semua contoh memakai CSS murni tanpa framework, supaya kamu benar-benar paham cara kerja di balik layarnya sebelum memakai bantuan seperti Bootstrap atau Tailwind.

Diagram perbandingan Flexbox satu dimensi dan Grid dua dimensi

CSS Flexbox dan Grid: Dua Senjata Layout Modern

Sebelum praktik, pahami dulu perbedaan filosofi keduanya lewat analogi sederhana. Flexbox itu seperti mengatur antrean: elemen disusun dalam satu baris atau satu kolom, dan kamu mengatur jarak serta perataannya di sepanjang jalur itu. Grid itu seperti mengatur ubin lantai: kamu membagi area menjadi baris dan kolom, lalu menempatkan elemen ke petak-petak yang tersedia.

Aturan praktisnya: pakai Flexbox untuk komponen satu dimensi seperti navbar, deretan tombol, atau kartu yang sejajar horizontal. Pakai Grid untuk layout dua dimensi seperti galeri foto, dashboard, atau keseluruhan kerangka halaman. Keduanya bisa digabung: Grid untuk kerangka besar halaman, Flexbox untuk mengatur isi di dalam setiap petaknya.

Kedua teknologi ini didukung penuh semua browser modern, jadi kamu tidak perlu khawatir soal kompatibilitas untuk proyek baru. Mari mulai dari Flexbox.

Flexbox: Mengatur Layout Satu Dimensi

Flexbox bekerja dengan dua peran: flex container (wadah) dan flex item (isi di dalamnya). Kamu mengubah sebuah elemen menjadi flex container cukup dengan satu baris: display: flex. Seketika itu juga semua anak langsungnya menjadi flex item yang tersusun horizontal dari kiri ke kanan.

<div class="container">
  <div class="kotak">1</div>
  <div class="kotak">2</div>
  <div class="kotak">3</div>
</div>
.container {
  display: flex;
  gap: 12px; /* jarak antar item */
}

.kotak {
  width: 80px;
  height: 80px;
  background-color: orange;
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  border-radius: 8px;
}

Properti gap memberi jarak seragam antar item tanpa margin manual yang merepotkan. Perhatikan juga trik di class .kotak: ia sendiri menjadi flex container kecil agar angka di dalamnya rata tengah sempurna, teknik yang sangat sering dipakai untuk membuat tombol, badge, dan avatar.

Properti Penting Flexbox yang Wajib Hafal

Kekuatan Flexbox ada pada properti-propertinya. Berikut empat yang paling sering dipakai, semuanya ditulis di flex container.

justify-content mengatur perataan item sepanjang sumbu utama (horizontal bila arah default). Nilainya antara lain flex-start (rapat kiri), center (tengah), flex-end (rapat kanan), space-between (ujung ke ujung dengan jarak merata), dan space-around.

align-items mengatur perataan sepanjang sumbu silang (vertikal bila arah default). Nilai populernya stretch (default, item melar setinggi container), center, flex-start, dan flex-end. Kombinasi justify-content: center dan align-items: center adalah cara termudah membuat konten tepat di tengah layar.

flex-direction mengubah arah susunan. Nilai defaultnya row (horizontal kiri ke kanan). Ubah menjadi column untuk susunan vertikal ke bawah, yang sering dipakai untuk layout mobile atau tumpukan form.

flex-wrap menentukan apa yang terjadi bila item tidak muat satu baris. Nilai default nowrap memaksa semua item berdesakan, sedangkan wrap memindahkan kelebihan item ke baris baru dengan rapi.

.navbar {
  display: flex;
  justify-content: space-between; /* logo kiri, menu kanan */
  align-items: center;             /* sejajar vertikal */
  padding: 16px 24px;
}

.formulir {
  display: flex;
  flex-direction: column; /* input tersusun ke bawah */
  gap: 12px;
  max-width: 400px;
}

Contoh .navbar di atas adalah pola paling klasik di web: logo di kiri dan menu di kanan hanya dengan satu baris justify-content: space-between. Hafalkan pola ini karena kamu akan menuliskannya berkali-kali.

CSS Grid: Mengatur Layout Dua Dimensi

Kalau Flexbox mengatur antrean, Grid mengatur petak. Kamu mengubah elemen menjadi grid container dengan display: grid, lalu mendefinisikan kolomnya dengan grid-template-columns. Fungsi repeat() mempermudah penulisan kolom yang berulang.

<div class="galeri">
  <div class="foto">1</div>
  <div class="foto">2</div>
  <div class="foto">3</div>
  <div class="foto">4</div>
  <div class="foto">5</div>
  <div class="foto">6</div>
</div>
.galeri {
  display: grid;
  grid-template-columns: repeat(3, 1fr); /* 3 kolom sama lebar */
  gap: 16px;
}

.foto {
  background-color: #1a3a6e;
  color: white;
  height: 120px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  border-radius: 8px;
}

Satuan 1fr artinya satu fraksi dari ruang yang tersedia, sehingga tiga kolom 1fr selalu sama lebar mengikuti lebar container. Ini jauh lebih elegan dibanding menghitung persen manual. Properti gap di Grid memberi jarak antar baris sekaligus antar kolom dalam satu deklarasi.

Untuk membuat item melintasi beberapa kolom, pakai grid-column: span 2 pada itemnya. Teknik ini berguna untuk membuat kartu unggulan yang lebih lebar dari kartu biasa.

.foto-unggulan {
  grid-column: span 2; /* selebar 2 kolom */
}

Fungsi minmax() membuat grid responsif tanpa media query: grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)) otomatis mengatur jumlah kolom mengikuti lebar layar, dengan tiap kolom minimal 200 piksel. Satu baris ini menggantikan banyak kode responsif manual.

Studi Kasus: Layout Kartu Produk Responsif

Sekarang gabungkan pengetahuanmu menjadi komponen nyata: deretan kartu produk untuk toko online. Setiap kartu berisi gambar, nama produk, harga, dan tombol beli. Kita pakai Grid untuk deretannya dan Flexbox untuk isi tiap kartu.

<div class="daftar-produk">
  <div class="kartu">
    <div class="gambar-produk">Gambar</div>
    <h3>Kopi Arabika 200g</h3>
    <p class="harga">Rp45.000</p>
    <button>Beli</button>
  </div>
  <!-- duplikasi .kartu untuk produk lain -->
</div>
.daftar-produk {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 20px;
  padding: 20px;
}

.kartu {
  border: 1px solid #ddd;
  border-radius: 12px;
  padding: 16px;
  display: flex;              /* Flexbox di dalam kartu */
  flex-direction: column;     /* isi tersusun ke bawah */
  gap: 8px;
}

.gambar-produk {
  background-color: #f0f0f0;
  height: 140px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #999;
}

.kartu .harga {
  font-weight: bold;
  color: #e67e22;
  font-size: 18px;
}

.kartu button {
  margin-top: auto; /* dorong tombol ke bawah kartu */
  padding: 10px;
  border: none;
  border-radius: 8px;
  background-color: #1a3a6e;
  color: white;
  cursor: pointer;
}

Perhatikan trik margin-top: auto pada tombol: ia mendorong tombol ke dasar kartu sehingga semua tombol sejajar walau deskripsi produk berbeda panjang. Ini contoh sempurna kolaborasi Grid di luar dan Flexbox di dalam. Coba ubah lebar browser dan saksikan jumlah kolom menyesuaikan otomatis tanpa satu pun media query.

Studi Kasus: Navbar Responsif dengan Flexbox

Navbar adalah komponen wajib hampir setiap website. Kita buat navbar dengan logo di kiri dan menu di kanan untuk layar besar, yang berubah menjadi tumpukan vertikal di layar kecil memakai satu media query.

<nav class="navbar">
  <div class="logo">TokoKu</div>
  <ul class="menu">
    <li><a href="#">Beranda</a></li>
    <li><a href="#">Produk</a></li>
    <li><a href="#">Tentang</a></li>
    <li><a href="#">Kontak</a></li>
  </ul>
</nav>
.navbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  background-color: #1a3a6e;
  padding: 16px 24px;
}

.logo {
  color: white;
  font-weight: bold;
  font-size: 20px;
}

.menu {
  display: flex;
  gap: 20px;
  list-style: none;
  margin: 0;
  padding: 0;
}

.menu a {
  color: white;
  text-decoration: none;
}

/* Layar kecil: ubah jadi vertikal */
@media (max-width: 600px) {
  .navbar {
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
  }

  .menu {
    flex-direction: column;
    gap: 8px;
  }
}

Kuncinya hanya dua baris di media query: flex-direction: column pada navbar dan menu. Sisanya mengikuti otomatis. Pola ini jauh lebih ringkas dibanding teknik float zaman dulu yang butuh clearfix dan perhitungan lebar manual.

CSS Flexbox dan Grid: Kapan Memakai yang Mana

Bingung memilih di antara keduanya adalah hal wajar. Pakai panduan cepat ini. Pilih Flexbox ketika kamu mengatur elemen dalam satu arah: navbar, deretan tombol aksi, form vertikal, atau konten yang rata tengah. Pilih Grid ketika kamu butuh kendali dua dimensi: galeri, dashboard, pricing table, atau kerangka halaman dengan header, sidebar, dan konten.

Bila ragu, tanyakan pada dirimu: apakah aku menyusun dalam satu arah saja? Bila ya, Flexbox jawabannya. Apakah aku butuh baris DAN kolom sekaligus? Bila ya, Grid jawabannya. Dalam praktiknya kamu akan sering memakai keduanya bersamaan seperti pada studi kasus kartu produk di atas, dan itu justru praktik yang dianjurkan.

Satu catatan: jangan memakai Grid untuk hal sepele satu dimensi seperti meratakan satu tombol ke kanan, dan jangan memaksa Flexbox untuk layout tabel kompleks. Memakai alat yang tepat membuat kode lebih pendek dan mudah dirawat.

Kesalahan Umum Saat Belajar Flexbox dan Grid

Pertama, lupa mengatur display: flex atau display: grid pada container tetapi properti seperti justify-content ditulis di item. Properti layout selalu ditulis di container, bukan di itemnya. Kedua, mengira align-items dan justify-content selalu berarti vertikal dan horizontal. Keduanya mengikuti sumbu yang berubah bila flex-direction diganti ke column.

Ketiga, memakai persen untuk kolom Grid padahal fr lebih tepat karena otomatis memperhitungkan gap. Keempat, tidak mereset margin dan padding bawaan pada ul saat membuat menu navbar, sehingga muncul jarak misterius. Kelima, menumpuk terlalu banyak nesting flex container yang sebenarnya bisa diselesaikan satu level Grid. Bila kode layoutmu terasa berbelit, biasanya ada cara yang lebih sederhana.

Langkah Selanjutnya

Kamu sekarang menguasai dua sistem layout modern CSS: Flexbox untuk satu dimensi dan Grid untuk dua dimensi, lengkap dengan dua studi kasus nyata berupa kartu produk responsif dan navbar adaptif. Skill ini langsung terpakai di setiap proyek web yang kamu kerjakan.

Layout yang bagus menjadi jauh lebih hidup dengan interaktivitas. Pelajari cara membuat navbar dan tombolmu merespons klik pengguna di Tutorial JavaScript untuk Pemula: Variabel, Fungsi, dan Manipulasi DOM. Dan bila kamu ingin melihat bagaimana tampilan seperti ini dipadukan dengan data dari server, Tutorial Laravel 12: Membuat CRUD Sederhana dari Nol untuk Pemula menunjukkan sisi backend-nya memakai Blade template yang distyling dengan teknik yang baru saja kamu pelajari.

Filed Under: Tutorial Pemrograman Tagged With: css, css grid, flexbox, layout web, tutorial css

Categories

  • Beasiswa
  • Bedtime Tales
  • Berita Teknologi
  • Berita Terkini
  • Dunia Islam
  • Flutter
  • Laravel
  • Machine Learning
  • Manfaat Buah
  • Mata Kuliah
  • Matematika Diskrit
  • Memori Kolektif
  • Metode Numerik
  • Mobile Computing
  • Panduan
  • Teori Peluang
  • Tutorial
  • Tutorial Pemrograman

Recent Posts

  • Belajar CSS Flexbox dan Grid: Layout Modern dengan Contoh Praktis
  • Tutorial Laravel 12: Relasi Database Eloquent One to Many
  • Cara Install XAMPP dan Menjalankan Program PHP Pertama
  • Tutorial JavaScript untuk Pemula: Variabel, Fungsi, dan Manipulasi DOM
  • Pendaftaran CPNS 2026: Syarat Umum, Dokumen, dan Cara Buat Akun SSCASN

Archives

  • November 2026
  • October 2026
  • April 2026
  • June 2025
  • April 2025
  • January 2025
  • March 2024
  • January 2024
  • December 2023
  • May 2023
  • September 2022
  • July 2022
  • June 2022
  • May 2022
  • April 2022
  • February 2022
  • December 2021
  • November 2021
  • June 2021
  • May 2021
  • March 2021
  • February 2021
  • November 2020
  • April 2020
  • March 2020
  • November 2019
  • October 2019
  • September 2019

Recent Comments

    Copyright © 2026 · Magazine Pro Theme on Genesis Framework · WordPress · Log in