HTML Tingkat Lanjut
Menyusun Tata Letak dengan Flexbox

oleh: Suryo Adhy Chandra, ST

Setelah memahami div, padding, dan margin, pertanyaan berikutnya biasanya sama: bagaimana menaruh beberapa kotak berdampingan dengan rapi, dan bagaimana membuatnya tetap enak dilihat di layar ponsel. Dulu pekerjaan ini diakali dengan float dan tabel, dan hasilnya sering merepotkan. Sekarang ada cara yang jauh lebih sederhana, yaitu Flexbox.

1. Satu baris yang mengubah segalanya

Flexbox diaktifkan dengan satu properti pada elemen pembungkus. Begitu display: flex dipasang, seluruh anak di dalamnya otomatis berjajar mendatar.

.pembungkus { display: flex; gap: 10px; }
Satu
Dua
Tiga
Properti gap memberi jarak antar-kotak tanpa perlu menambahkan margin pada masing-masing. Ini lebih rapi karena tidak menyisakan jarak berlebih di ujung kiri maupun kanan.

2. Dua sumbu yang harus dibedakan

Ini bagian yang paling sering membingungkan. Flexbox mengenal dua arah:

Properti justify-content mengatur sumbu utama, sedangkan align-items mengatur sumbu silang. Menghafal keduanya terbalik adalah penyebab paling umum tata letak tidak sesuai harapan.

3. Menengahkan isi, mendatar dan tegak sekaligus

Menengahkan sesuatu secara tegak dulu terkenal sulit di CSS. Dengan Flexbox, dua baris sudah cukup.

.pembungkus { display: flex; justify-content: center; /* tengah mendatar */ align-items: center; /* tengah tegak */ min-height: 120px; }
Di tengah
Agar align-items: center terlihat pengaruhnya, pembungkusnya harus punya tinggi. Kalau tingginya hanya mengikuti isi, tidak ada ruang kosong untuk menengahkan, dan hasilnya akan tampak tidak berubah. Ini penyebab paling sering keluhan "align-items saya tidak jalan".

4. Mengatur jarak antar-kotak

Nilai justify-content yang paling sering dipakai:

.navbar { display: flex; justify-content: space-between; }
Logo
Menu
Masuk

Pola space-between inilah yang dipakai hampir semua bilah navigasi: logo di kiri, tombol masuk di kanan, tanpa perlu menghitung lebar apa pun.

5. Membuat tata letak yang mengikuti lebar layar

Secara bawaan, kotak-kotak Flexbox akan memaksakan diri tetap satu baris meskipun layarnya sempit, sehingga isinya jadi gepeng. Properti flex-wrap mengizinkan kotak berpindah ke baris berikutnya kalau sudah tidak muat.

.kartu-kumpulan { display: flex; flex-wrap: wrap; gap: 10px; } .kartu { flex: 1 1 150px; }
Kartu A
Kartu B
Kartu C
Kartu D

Coba perkecil jendela browser sambil memperhatikan kotak di atas. Kotaknya akan turun sendiri ke baris berikutnya tanpa satu pun aturan tambahan.

Tulisan flex: 1 1 150px berarti tiga hal sekaligus: kotak boleh melebar bila ada ruang, boleh menyempit bila ruang kurang, dan lebar dasarnya 150 piksel. Inilah cara paling ringkas membuat tata letak yang menyesuaikan diri tanpa media query.

6. Mengubah arah menjadi menurun

Kalau ingin kotak tersusun ke bawah alih-alih berjajar, ubah arah sumbu utamanya.

.sidebar { display: flex; flex-direction: column; gap: 8px; }
Perlu diingat, ketika flex-direction diubah menjadi column, arti justify-content dan align-items ikut bertukar. Sekarang justify-content mengatur arah tegak dan align-items mengatur arah mendatar. Ini masuk akal begitu diingat bahwa keduanya mengikuti sumbu, bukan mengikuti arah layar.

7. Kapan memakai Flexbox dan kapan memakai Grid

CSS punya satu alat tata letak lain bernama Grid. Pembagian yang paling mudah diingat: Flexbox untuk susunan satu arah, entah satu baris atau satu kolom. Grid untuk susunan dua arah, yaitu baris dan kolom sekaligus seperti tabel.

Untuk bilah navigasi, deretan tombol, atau daftar kartu, Flexbox biasanya sudah cukup dan lebih sederhana. Untuk tata letak halaman utuh dengan sidebar, header, dan konten, Grid sering lebih tepat.

8. Latihan

Petunjuk untuk latihan ketiga: beri pembungkusnya min-height: 100vh agar tingginya setinggi layar, sehingga ada ruang untuk menengahkan secara tegak.
← Kembali Ke Daftar Materi HTML Lanjutan