CSS Grid adalah sistem tata letak dua dimensi yang memungkinkan kamu mengatur elemen secara baris dan kolom sekaligus. Berbeda dengan Flexbox yang bekerja satu dimensi, Grid sangat cocok untuk membuat layout halaman yang lebih kompleks seperti dashboard, galeri foto, atau struktur halaman penuh. Artikel ini akan membahas cara menggunakan CSS Grid dengan contoh nyata yang mudah dipahami.
Apa Itu CSS Grid?
CSS Grid Layout adalah modul CSS yang memberikan sistem grid berbasis baris dan kolom. Dengan Grid, kamu bisa menentukan ukuran kolom, baris, jarak antar sel, dan posisi setiap elemen dengan sangat presisi. Dukungan browser untuk CSS Grid sudah sangat baik โ hampir semua browser modern mendukungnya.
Mengaktifkan CSS Grid
Sama seperti Flexbox, Grid diaktifkan dengan properti display:
.container {
display: grid;
}
Setelah ini, semua elemen anak langsung menjadi grid item.
Mendefinisikan Kolom dengan grid-template-columns
Ini adalah properti paling penting dalam CSS Grid. Kamu menentukan jumlah dan ukuran kolom:
.container {
display: grid;
grid-template-columns: 200px 200px 200px; /* 3 kolom 200px */
}
/* Menggunakan satuan fr (fraction) */
.container {
display: grid;
grid-template-columns: 1fr 1fr 1fr; /* 3 kolom sama lebar */
}
/* Shorthand dengan repeat() */
.container {
display: grid;
grid-template-columns: repeat(3, 1fr); /* sama dengan di atas */
}
Mendefinisikan Baris dengan grid-template-rows
.container {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: 100px auto 60px; /* header, konten, footer */
}
Jarak Antar Sel dengan gap
.container {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16px; /* jarak baris dan kolom */
/* row-gap: 16px; */
/* column-gap: 24px; */
}
Contoh Praktis: Layout Tiga Kolom Responsif
Berikut cara membuat galeri tiga kolom yang responsif menggunakan auto-fill dan minmax():
<div class="galeri">
<div class="kartu">Item 1</div>
<div class="kartu">Item 2</div>
<div class="kartu">Item 3</div>
<div class="kartu">Item 4</div>
<div class="kartu">Item 5</div>
<div class="kartu">Item 6</div>
</div>
<style>
.galeri {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
gap: 20px;
padding: 20px;
}
.kartu {
background: #e3f2fd;
padding: 24px;
border-radius: 8px;
text-align: center;
font-weight: bold;
}
</style>
Dengan auto-fill dan minmax(200px, 1fr), kolom akan otomatis menyesuaikan jumlahnya berdasarkan lebar layar.
Contoh Praktis: Layout Halaman Penuh
CSS Grid sangat ideal untuk membuat struktur halaman klasik (header, sidebar, konten, footer):
<div class="halaman">
<header class="header">Header</header>
<aside class="sidebar">Sidebar</aside>
<main class="konten">Konten Utama</main>
<footer class="footer">Footer</footer>
</div>
<style>
.halaman {
display: grid;
grid-template-areas:
"header header"
"sidebar konten"
"footer footer";
grid-template-columns: 250px 1fr;
grid-template-rows: 60px 1fr 50px;
min-height: 100vh;
gap: 8px;
}
.header { grid-area: header; background: #1e293b; color: white; padding: 16px; }
.sidebar { grid-area: sidebar; background: #f1f5f9; padding: 16px; }
.konten { grid-area: konten; background: white; padding: 16px; }
.footer { grid-area: footer; background: #334155; color: white; padding: 16px; }
</style>
Menempatkan Item di Posisi Tertentu
Kamu bisa menentukan posisi item secara eksplisit menggunakan grid-column dan grid-row:
.item-lebar {
grid-column: 1 / 3; /* mulai kolom 1, akhir sebelum kolom 3 */
}
.item-tinggi {
grid-row: 1 / 3; /* membentang dua baris */
}
/* Shorthand */
.item-span {
grid-column: span 2; /* membentang 2 kolom */
}
Tips Menggunakan CSS Grid
- Gunakan
grid-template-areasuntuk layout yang lebih mudah dibaca dan dipahami. - Kombinasikan
auto-filldenganminmax()untuk layout responsif tanpa media query. - Gunakan browser DevTools (F12) untuk memvisualisasikan garis-garis grid.
- Flexbox dan Grid bisa digunakan bersama โ Grid untuk layout besar, Flexbox untuk komponen kecil.
Kesimpulan
CSS Grid adalah solusi terbaik untuk membuat layout dua dimensi yang kompleks dan responsif. Dengan memahami grid-template-columns, grid-template-areas, dan fungsi seperti repeat() serta minmax(), kamu sudah siap membangun berbagai jenis layout halaman web modern. Latih terus dengan membuat berbagai struktur halaman menggunakan CSS Grid.