Flexbox
Sebelum ada flexbox, menempatkan kotak di tengah secara vertikal butuh trik. Dengan display: flex, cukup dua deklarasi: justify-content dan align-items.
Satu baris atau satu kolom
Flexbox, modul CSS Flexible Box Layout, menyusun sekelompok kotak sepanjang satu garis. Pasang display: flex pada sebuah wadah, maka anak-anak langsungnya, yaitu item flex, berjajar berdampingan alih-alih bertumpuk. Satu deklarasi itu sudah cukup untuk bilah menu, deretan tombol, atau kartu yang bagian kakinya harus menempel di bawah. Flexbox bekerja dalam satu dimensi sekaligus: baris atau kolom. Jika kamu butuh baris dan kolom bersamaan, grid, di unit berikutnya, biasanya alat yang lebih tepat.
Dua sumbu
Segala hal di flexbox dijelaskan dengan dua sumbu. Sumbu utama adalah arah aliran item, diatur oleh flex-direction: row (bawaan) atau column. Sumbu silang tegak lurus terhadapnya. justify-content membagikan item sepanjang sumbu utama: flex-start, center, flex-end, space-between (item pertama dan terakhir di tepi, celah sama di antaranya), atau space-around. align-items menempatkannya pada sumbu silang: stretch (bawaan, semua item setinggi item tertinggi), flex-start, center, atau flex-end. Jadi, sebuah kotak berada di tengah pada kedua arah dengan justify-content: center dan align-items: center.
.bar {
display: flex;
justify-content: space-between; /* logo left, menu right */
align-items: center; /* vertically centred */
gap: 16px; /* space between items */
}
.cards { display: flex; flex-wrap: wrap; gap: 12px; }
.card { flex: 1 1 200px; } /* grow, shrink, start at 200px */Celah dan pembungkusan
gap memberi ruang di antara item tanpa menambah ruang di tepi luar, yang biasanya memang kamu inginkan dan sulit dicapai dengan margin. Secara bawaan, item flex tetap di satu baris dan menyusut agar muat, walaupun jadi terjepit. flex-wrap: wrap membolehkan item pindah ke baris baru saat ruang tidak cukup, jadi deretan empat kartu di laptop bisa menjadi dua baris berisi dua di tablet dan satu kolom di ponsel, tanpa media query.
Cara item membesar dan menyusut
Singkatan flex pada item menerima tiga nilai. flex-grow menyatakan seberapa banyak sisa ruang yang diambil item dibandingkan saudaranya; flex-shrink menyatakan seberapa rela ia menyusut saat ruang habis; flex-basis adalah ukuran awalnya sebelum membesar atau menyusut. flex: 1 1 200px berarti mulai dari 200 piksel, lalu berbagi ruang lebih sama rata dengan item lain yang juga punya grow 1. flex: 1 saja adalah singkatan untuk 1 1 0%, yang membuat semua item sama lebar. Beri satu item flex-grow: 2 dan yang lain 1, maka item itu mengambil dua kali bagian mereka dari sisa ruang.
Urutan tampilan dan urutan sebenarnya
Flexbox bisa mengubah urutan tampil item, dengan flex-direction: row-reverse atau properti order, tanpa menyentuh HTML. Gunakan dengan hati-hati. Fokus keyboard dan pembaca layar tetap mengikuti urutan di HTML, jadi jika layar menampilkan Contact sebelum Home tetapi Tab mengunjungi Home lebih dulu, pengguna keyboard jadi bingung. Jika urutan itu penting bagi makna, ubahlah di HTML.
| wadah flex | Induk dengan display: flex |
| item flex | Anak langsung dari wadah flex |
| sumbu utama | Arah aliran; diatur oleh flex-direction |
| justify-content | Membagikan item sepanjang sumbu utama |
| align-items | Menempatkan item pada sumbu silang |
| gap | Ruang di antara item, bukan di tepi |
| flex: 1 1 200px | grow 1, shrink 1, basis 200px |
- Deklarasi mana yang mengubah elemen menjadi wadah flex?
- display: flex
- flex: 1
- position: flex
- Dalam baris, properti mana yang menyebarkan item secara horizontal?
- justify-content
- align-items
- flex-wrap
- Dengan flex-direction: column, apa yang diatur justify-content?
- Pembagian vertikal
- Pembagian horizontal
- Ukuran fon
- Nilai mana yang menaruh item pertama dan terakhir di tepi dengan celah sama di antaranya?
- space-between
- space-around
- center
- Apa nilai bawaan align-items?
- stretch
- center
- flex-start
- Empat item punya flex: 1 dalam wadah 400px tanpa celah. Berapa lebar masing-masing?
- Tiga item dengan flex-basis 0 berbagi 400px. Satu punya flex-grow 2, yang lain 1. Berapa lebar item yang besar?
- Apa yang dimungkinkan flex-wrap: wrap?
- Item pindah ke baris baru saat tidak ada ruang
- Teks terbungkus di dalam item
- Item saling tumpang tindih
- Properti order menaruh Contact paling depan di layar, padahal ia paling akhir di HTML. Apa yang tetap mengunjunginya paling akhir?
- Fokus keyboard dan pembaca layar
- Penunjuk mouse
- Tidak ada
- Flexbox menata dalam berapa dimensi sekaligus?
- display: flex menjajarkan anak-anak langsung sepanjang sumbu utama.
- justify-content pada sumbu utama, align-items pada sumbu silang, gap di antaranya.
- flex: grow shrink basis; flex-wrap: wrap untuk baris yang menata ulang; jaga urutan tampilan sama dengan urutan HTML.
Sumber kursus ini (6)
- W3C CSS Working Group specifications: CSS Snapshot 2025, Selectors Level 4, CSS Cascading and Inheritance Level 5, CSS Color Level 4, CSS Values and Units Level 4, CSS Box Model Level 3, CSS Box Sizing Level 3, CSS Fonts Level 4, CSS Flexible Box Layout Level 1, CSS Grid Layout Level 2, Media Queries Level 4 and Level 5 (w3.org/TR/, checked 2026-10-17)
- MDN Web Docs, Learn web development: CSS styling basics and CSS layout, and the CSS reference (developer.mozilla.org/en-US/docs/Learn_web_development/Core/Styling_basics, .../Core/CSS_layout, developer.mozilla.org/en-US/docs/Web/CSS, checked 2026-10-17)
- W3C, CSS history and CSS1 Recommendation of 17 December 1996 (w3.org/Style/CSS20/history.html, w3.org/press-releases/1996/css1-rec, checked 2026-10-17)
- W3C WCAG 2.2, success criteria 1.4.3 Contrast (Minimum)
- 1.4.8 Visual Presentation, 1.4.10 Reflow, 1.4.12 Text Spacing (w3.org/TR/WCAG22/, checked 2026-10-17)
- every code exercise checked with a Playwright probe against a reference solution.
Diperiksa: 2026-10-17