CSS Grid dan Flexbox sama-sama bisa mengatur elemen dalam baris dan kolom, tetapi cara kerjanya berbeda. Perbandingan CSS Grid vs Flexbox untuk layout dua dimensi berikut mencakup contoh kode dan saran penggunaan. Setelah membaca, kamu bisa memutuskan kapan memakai Grid, kapan Flexbox, dan kapan menggabungkan keduanya.
Pengertian dasar CSS Grid dan Flexbox
CSS Grid memungkinkan kamu menentukan baris dan kolom secara eksplisit. Kamu bisa membuat grid dengan grid-template-columns dan grid-template-rows, lalu menempatkan item di sel tertentu. Flexbox mengatur item dalam satu sumbu (baris atau kolom) dan mendistribusikan ruang di sepanjang sumbu itu. Flexbox lebih sederhana untuk komponen satu dimensi, tetapi bisa juga digunakan untuk layout dua dimensi dengan pembungkusan (wrap).
Contoh kode: Grid untuk layout dua dimensi
Misalnya kita ingin membuat layout galeri dengan tiga kolom dan dua baris. Dengan Grid, kita bisa menulis:
.gallery {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: auto auto;
gap: 16px;
}
Setiap item akan otomatis mengisi sel grid. Jika kita ingin satu item mengambil dua kolom, kita bisa menambahkan grid-column: span 2. Grid memudahkan pengaturan posisi yang presisi.
Contoh kode: Flexbox untuk layout dua dimensi
Dengan Flexbox, kita bisa membuat layout yang mirip menggunakan flex-wrap: wrap dan lebar item yang tetap atau persentase:
.gallery {
display: flex;
flex-wrap: wrap;
gap: 16px;
}
.gallery > * {
flex: 1 1 calc(33.333% - 16px);
}
Flexbox akan mendistribusikan item ke baris baru saat ruang habis. Namun, untuk mengatur item agar mengambil dua kolom, kita perlu trik tambahan atau menggabungkan dengan properti lain.
Kelebihan dan kekurangan masing-masing
CSS Grid
- Kontrol penuh atas baris dan kolom, cocok untuk layout kompleks.
- Dukungan untuk penempatan item secara eksplisit (grid lines).
- Bisa membuat template area dengan
grid-template-areas. - Kurva belajar lebih curam bagi pemula.
Flexbox
- Lebih sederhana untuk komponen satu dimensi seperti navbar atau deretan kartu.
- Mudah mengatur perataan dan distribusi ruang dengan
justify-contentdanalign-items. - Kurang ideal untuk layout dua dimensi yang rumit karena memerlukan perhitungan lebar manual.
Kapan memakai Grid, kapan Flexbox?
Gunakan Grid ketika kamu perlu mengatur elemen dalam baris dan kolom sekaligus, misalnya untuk layout halaman utama, galeri foto, atau dashboard. Flexbox lebih pas untuk komponen yang hanya perlu diatur dalam satu baris atau kolom, seperti menu navigasi, deretan tombol, atau kartu yang sejajar. Untuk layout dua dimensi yang lebih dinamis, kamu bisa menggabungkan keduanya: Grid untuk struktur utama, Flexbox untuk isi di dalam sel. Diskusi lebih lanjut tentang perbedaan keduanya bisa dibaca di CSS Grid vs Flexbox: Perbandingan untuk Layout Satu Dimensi.
Jika kamu baru memulai, pelajari Flexbox terlebih dahulu karena konsepnya lebih mudah. Setelah nyaman, lanjut ke Grid untuk layout yang lebih kompleks. Ada juga panduan Flexbox vs CSS Grid: Pilih yang Mana untuk Layout Web yang membahas sudut pandang lain.
Menggabungkan Grid dan Flexbox
Kombinasi keduanya sering menjadi pilihan terbaik. Misalnya, gunakan Grid untuk membuat kerangka halaman dengan area header, sidebar, dan konten. Di dalam area konten, gunakan Flexbox untuk mengatur kartu-kartu agar sejajar. Contoh:
.layout {
display: grid;
grid-template-columns: 200px 1fr;
grid-template-rows: auto 1fr auto;
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
min-height: 100vh;
}
.main {
display: flex;
flex-wrap: wrap;
gap: 16px;
}
Dengan cara ini, kamu memanfaatkan kekuatan masing-masing. Grid memberikan struktur, Flexbox memberikan fleksibilitas pada konten.
Contoh perbandingan dalam tabel
| Aspek | CSS Grid | Flexbox |
|---|---|---|
| Dimensi | Dua dimensi (baris dan kolom) | Satu dimensi (baris atau kolom) |
| Penempatan item | Eksplisit dengan grid lines | Otomatis mengikuti alur |
| Kontrol ukuran | Presisi tinggi | Berdasarkan konten atau flex |
| Kurva belajar | Lebih curam | Lebih landai |
| Kasus umum | Layout halaman, galeri | Navbar, deretan kartu |
Ringkasan
CSS Grid unggul untuk layout dua dimensi yang membutuhkan kontrol baris dan kolom secara simultan. Flexbox lebih sederhana untuk satu dimensi dan komponen kecil. Sering kali, kombinasi keduanya memberikan hasil terbaik. Pilih sesuai kebutuhan proyek, dan jangan ragu bereksperimen dengan keduanya.
Pertanyaan yang Sering Diajukan
Apakah CSS Grid bisa menggantikan Flexbox sepenuhnya?
Tidak. Grid dan Flexbox dirancang untuk tujuan berbeda. Grid cocok untuk layout dua dimensi, sedangkan Flexbox lebih efisien untuk satu dimensi. Menggabungkan keduanya adalah praktik umum.
Apakah Flexbox bisa digunakan untuk layout dua dimensi?
Bisa, dengan flex-wrap: wrap dan pengaturan lebar item. Namun, untuk kontrol yang lebih presisi atas baris dan kolom, Grid lebih tepat.
Apakah perlu mempelajari keduanya?
Ya, karena keduanya saling melengkapi. Banyak proyek web modern menggunakan Grid untuk struktur utama dan Flexbox untuk komponen di dalamnya.