CSS Grid: Membangun Tata Letak Dua Dimensi

CSS Grid mengatur elemen dalam baris DAN kolom sekaligus — pas untuk tata letak halaman dan kisi kartu. Pelajari grid-template-columns, satuan fr, gap, repeat(), dan perbandingan Grid dengan Flexbox.

Diterbitkan 13 Juli 20266 menit bacaOleh ACY Partner Indonesia
CSS Grid — display grid untuk tata letak dua dimensi
300 × 250Slot Iklan TersediaPasang iklan Anda di sini

Di artikel sebelumnya, kita lihat Flexbox menata elemen dalam satu arah saja — entah sederet ke samping, entah sebaris ke bawah. Tapi sering kali kamu butuh dua-duanya sekaligus: kisi kartu, halaman yang terbagi jadi header, sidebar, dan area konten, atau galeri foto dengan baris dan kolom yang rapi. Itu sudah masuk ranah dua dimensi, dan di situlah CSS Grid main.

Grid adalah alat penataan paling kuat yang dimiliki CSS. Kalau Flexbox cuma mikir dalam satu garis, Grid mikir dalam bentuk tabel utuh berisi baris dan kolom yang kamu tentukan sendiri, lalu kamu tinggal mengisinya. Kedengarannya ribet, padahal dasar-dasarnya gampang banget diikuti. Yuk, kita coba bikin beberapa grid.

Ide inti: baris dan kolom

Sama seperti Flexbox, Grid bekerja pada satu container beserta item-item di dalamnya. Sebuah elemen kamu ubah menjadi grid container lewat display: grid, lalu kamu tentukan berapa kolom yang kamu mau (dan kalau perlu, barisnya juga):

.container {
  display: grid;
  grid-template-columns: 200px 200px 200px;
}
<div class="container">
  <div>Item 1</div>
  <div>Item 2</div>
  <div>Item 3</div>
  <div>Item 4</div>
</div>

grid-template-columns: 200px 200px 200px artinya “bikin tiga kolom, masing-masing selebar 200px.” Item-itemnya otomatis mengisi grid ini — tiga yang pertama menempati baris pertama, lalu yang keempat turun ke baris berikutnya. Kamu cukup menyiapkan kerangkanya, dan urusan menempatkan item biar Grid yang kerjakan.

grid-template-columns mendefinisikan struktur kolom

Inti dari Grid ada di grid-template-columns. Tiap nilai yang kamu tuliskan mewakili satu kolom, dan nilai itulah yang menentukan lebarnya. Tiga nilai berarti tiga kolom, lima nilai berarti lima kolom. Begitu kamu sudah terbiasa dengan property yang satu ini, Grid langsung terasa jauh lebih masuk akal — semua fitur lainnya berdiri di atas konsep ini.

Satuan fr: kolom yang lentur

Menuliskan lebar dalam piksel yang tetap itu terlalu kaku. Untungnya Grid punya satuan khusus untuk masalah ini: fr, singkatan dari “fraction”, alias bagian dari ruang yang tersisa. Dengan fr, kolom-kolom bisa berbagi ruang container secara luwes:

.container {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
}

Hasilnya tiga kolom berukuran sama yang bareng-bareng memenuhi seluruh container, berapa pun lebar layarnya — masing-masing kebagian satu bagian ruang yang merata. Kamu juga bebas mengatur proporsinya:

grid-template-columns: 1fr 2fr;   /* kolom kedua dua kali lebih lebar dari yang pertama */

Bahkan kamu bisa menggabungkan yang tetap dengan yang luwes:

grid-template-columns: 250px 1fr;  /* sidebar tetap 250px, konten mengisi sisanya */

Yang terakhir ini contoh tata letak halaman yang sudah klasik: sidebar dengan lebar tetap, lalu area konten yang mengambil sisa ruang yang ada. Satuan fr inilah yang bikin tata letak Grid bisa menyesuaikan diri dengan mulus di berbagai ukuran layar.

repeat() untuk banyak kolom

Begitu kamu butuh banyak kolom yang ukurannya sama, menuliskan 1fr 1fr 1fr 1fr mulai terasa merepotkan. Nah, fungsi repeat() siap mengerjakannya buat kamu:

.container {
  display: grid;
  grid-template-columns: repeat(4, 1fr);   /* empat kolom berukuran sama */
}

repeat(4, 1fr) artinya “empat kolom, masing-masing 1fr” — sama persis dengan menulis 1fr 1fr 1fr 1fr, cuma jauh lebih ringkas. Cara inilah yang biasa dipakai untuk membuat grid yang rapi, misalnya galeri foto atau deretan kartu produk.

Celah antar item grid

Sama seperti di Flexbox, Grid juga punya property gap untuk mengatur jarak antar item — dan di Grid rasanya malah lebih pas, karena sekaligus mengatur celah di antara baris maupun kolom:

.container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}

Itu memberi celah 20px yang konsisten di antara tiap baris dan kolom. Kalau kamu mau jarak yang berbeda untuk masing-masing arah, atur saja terpisah lewat row-gap dan column-gap. Nggak perlu lagi repot menambah margin satu per satu di tiap item — cukup gap, semua beres dengan rapi.

Kisi kartu yang nyata

Sekarang kita bikin sesuatu yang langsung kepakai: kisi kartu responsif yang otomatis menampung sebanyak mungkin kolom sesuai lebar layar yang tersedia. Polanya memang sedikit lebih rumit, tapi manfaatnya besar:

.card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 24px;
}

Kelihatannya padat, jadi kita bedah pelan-pelan. minmax(250px, 1fr) artinya “tiap kolom minimal selebar 250px, tapi boleh melar untuk mengisi ruang yang ada.” Sedangkan auto-fit artinya “muat sebanyak mungkin kolom selama masih cukup nyaman.” Digabungkan, keduanya menghasilkan grid yang menampilkan, misalnya, empat kartu di layar lebar, dua di tablet, dan satu di ponsel — semua berjalan otomatis, tanpa tambahan kode sedikit pun. Satu baris ini termasuk pola tata letak paling berguna di CSS modern, jadi sayang kalau dilewatkan.

Mendefinisikan baris juga

Sampai sini kita baru menentukan kolom, dan membiarkan baris muncul otomatis. Padahal kamu juga bisa menentukan baris secara eksplisit lewat grid-template-rows, caranya sama persis:

.container {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 100px 200px;
}

Hasilnya grid 2×2 dengan baris pertama yang pendek dan baris kedua yang lebih tinggi. Menentukan baris dan kolom sekaligus itulah yang membuat Grid benar-benar dua dimensi — kamu jadi menyusun tabel sel yang utuh, bukan cuma sederet item.

Grid vs Flexbox: mana yang dipakai?

Sekarang kamu sudah punya dua alat penataan, jadi wajar kalau muncul pertanyaan: kapan pakai yang mana? Ini patokan sederhananya:

  • Flexbox untuk satu dimensi — satu baris atau satu kolom. Pakai untuk navbar, toolbar, menengahkan elemen, dan sederet item yang perlu diberi jarak atau dibungkus ke baris berikutnya.
  • Grid untuk dua dimensi — baris dan kolom sekaligus. Pakai untuk tata letak halaman, kisi kartu, galeri, dan apa pun yang memang berbentuk kisi sel.

Kamu akan memakai keduanya — sering kali bersamaan

Ini bukan soal memilih salah satu. Situs beneran justru memakai Flexbox dan Grid berdampingan: Grid mengurus tata letak halaman secara keseluruhan, sementara Flexbox menata isi di dalam tiap sel grid. Pola yang sering muncul adalah Grid berisi kartu, lalu di dalam tiap kartu Flexbox dipakai untuk menyusun judul, teks, dan tombolnya secara vertikal. Kuasai keduanya, dan biarkan patokan tadi memandu kamu — satu dimensi pakai Flexbox, dua dimensi pakai Grid.

Penutup

CSS Grid memberi kamu kendali penuh atas tata letak dua dimensi:

  • Pasang display: grid pada container, lalu tentukan kolomnya lewat grid-template-columns.
  • Satuan fr membagi ruang secara luwes (1fr 1fr = dua kolom sama besar; 250px 1fr = sidebar tetap + konten yang fleksibel).
  • repeat(n, 1fr) bikin banyak kolom seragam dengan ringkas.
  • gap memberi jarak yang konsisten antar baris dan kolom.
  • repeat(auto-fit, minmax(250px, 1fr)) menghasilkan kisi kartu responsif yang menyesuaikan diri dengan lebar layar.
  • grid-template-rows menentukan baris secara eksplisit untuk tata letak 2D yang penuh.
  • Pakai Flexbox untuk satu dimensi, Grid untuk dua dimensi — dan sering kali keduanya dipakai bareng.

Berbekal Flexbox dan Grid, pada dasarnya kamu bisa menyusun hampir semua tata letak yang ada di kepalamu. Tinggal satu langkah terakhir: memastikan tata letak itu tetap rapi di segala ukuran layar — dari monitor lebar sampai layar ponsel. Itulah bahasan artikel CSS pamungkas kita: desain responsif, di mana media query membuat tata letakmu menyesuaikan diri dengan perangkat apa pun yang dipakai pengunjung.

Tag:cssfrontendgridtata letakpemula
728 × 90Slot Iklan TersediaPasang iklan Anda di sini

Artikel Terkait

Lihat Semua Artikel

Artikel yang Mungkin Kamu Suka

Apa Itu Framework Frontend? — chip kode dengan tag komponen
Frontend / Dasar

Apa Itu Framework Frontend?

Penjelasan ramah untuk pemula tentang apa itu framework frontend, kenapa mereka ada, masalah apa yang mereka selesaikan dibanding JavaScript biasa, dan kapan kamu memang sebaiknya memakainya.

20 Sep 20268 menit baca
Sampul fundamentals frontend bertuliskan Apa Itu Frontend dan HTML + CSS + JS
Frontend / Dasar

Apa Itu Frontend Development?

Panduan ramah pemula tentang frontend development: bagian website yang kamu lihat dan klik secara langsung. Pahami cara kerja HTML, CSS, dan JavaScript, serta bedanya frontend dengan backend.

20 Sep 20268 menit baca
Ilustrasi sampul untuk Apa yang Dikerjakan Frontend Developer
Frontend / Dasar

Apa yang Dikerjakan Frontend Developer: Panduan untuk Pemula

Penjelasan ramah pemula tentang apa yang sebenarnya dikerjakan frontend developer setiap hari: mengubah desain jadi antarmuka yang berfungsi, membangun UI yang bisa dipakai ulang, sampai urusan responsif, aksesibilitas, dan kecepatan.

20 Sep 20269 menit baca
Kartu judul bertuliskan Styling dan Interaktivitas di atas latar biru gelap ACY Partner
Frontend / Dasar

Cara Kerja Styling dan Interaktivitas

Penjelasan ramah pemula soal bagaimana CSS menyulap HTML polos jadi tampilan rapi, dan bagaimana JavaScript menambahkan perilaku — pola berpikir struktur, gaya, perilaku saat membangun halaman web.

20 Sep 20268 menit baca
Tiga lapisan front-end menyatu di satu halaman web
Frontend / Dasar

Cara HTML, CSS, dan JavaScript Bekerja Bersama

Panduan praktis untuk pemula: bikin satu tombol kecil, beri struktur dengan HTML, tampilan dengan CSS, dan perilaku dengan JavaScript, lalu lihat ketiga lapisan ini bekerja sama di halaman nyata.

20 Sep 20268 menit baca
Sampul ikhtisar praktik terbaik frontend
Frontend / Dasar

Ikhtisar Praktik Terbaik Frontend

Peta ringkas tentang apa itu frontend yang baik — HTML bermakna, CSS rapi, JavaScript secukupnya, desain responsif, performa, dan progressive enhancement, lengkap dengan arahan untuk mendalaminya.

20 Sep 20268 menit baca