Flexbox: Items — CSS

Container ngatur "ruang", item-item ngatur "diri sendiri" di ruang itu. Setelah kuasai property container (justify, align, wrap), saatnya pegang kontrol…

Di lesson alignment, container yang mengatur posisi item. Di sini tiap item mengatur ukurannya sendiri: boleh melebar mengisi ruang kosong atau gak, boleh menyusut atau gak. Ruang kosong itu disebut sisa ruang: lebar container dikurangi lebar awal semua item.

🧪 Tebakan cepat: tiga kolom sama-sama punya flex-grow: 1, tapi lebar awalnya beda. Sesudah melebar, lebarnya jadi sama atau tetap beda? Tebak dulu, jawabannya ada di bagian "flex-grow membagi sisa ruang".

flex-grow membagi sisa ruang

.layout { display: flex; }
.sidebar { width: 88px; flex-grow: 0; }
.content { width: 64px; flex-grow: 1; }
.aside { width: 72px; flex-grow: 0; }

Hasilnya, Sidebar dan Aside tetap sempit, Konten melebar sampai barisnya penuh.

Angka flex-grow adalah jatah. Kalau dua item punya flex-grow: 1 dan satu punya flex-grow: 2, sisa ruang dibagi jadi empat bagian, dan yang 2 dapat dua bagian. Yang dibagi cuma sisa ruangnya, jadi kolom yang lebar awalnya beda tetap beda lebar walau flex-grow-nya sama. Itu jawaban tebakannya.

flex: 1 buat mengisi sisa ruang

flex adalah singkatan tiga properti sekaligus:

.sidebar { flex: 0 0 250px; }
.content { flex: 1; }

flex: 0 0 250px artinya gak melebar, gak menyusut, tetap 250px. flex: 1 sama dengan flex-grow: 1; flex-shrink: 1; flex-basis: 0. Basis 0 berarti seluruh ruang dianggap sisa, jadi beberapa item dengan flex: 1 dapat lebar yang sama rata. Hasilnya sidebar tetap 250px dan konten mengisi semua ruang di sebelahnya, resep layout dashboard.

flex-grow: 1 saja beda dengan flex: 1: basisnya tetap lebar isi. Kalau diminta flex: 1, tulis flex: 1.

Ubah urutan dengan order

.aside { order: -1; }

Item dengan order lebih kecil tampil lebih dulu. Nilai bawaannya 0, jadi order: -1 memindahkan .aside ke paling depan tanpa mengubah HTML.

⚠️ Jebakan yang sering ketemu

TL;DR: flex-grow membagi sisa ruang sesuai jatahnya (0 artinya gak ikut). flex-shrink mengatur boleh menyusut, flex-basis ukuran awal. flex: 1 (grow 1, shrink 1, basis 0) bikin item mengisi sisa ruang dan membaginya rata. flex: 0 0 250px mengunci ukuran 250px. order mengubah urutan tampil tanpa mengubah HTML.

Yang akan kamu pelajari