Setelah memahami Box Model & Pengaturan Layout di Part 4, sekarang kita akan mendalami layout CSS menggunakan: Flexbox.
Di Part 5 ini, kamu akan belajar tentang:
- Bagaimana Flexbox bekerja dalam layout CSS
- Properti-properti dasar Flexbox untuk penataan elemen
- Membuat layout responsif dengan Flexbox
Apa Itu Flexbox?
Flexbox adalah sistem layout CSS yang memungkinkan kita untuk mendistribusikan ruang di dalam elemen container dan menyusun elemen-elemen di dalamnya dengan cara yang lebih fleksibel dan responsif.
Flexbox sangat berguna untuk desain modern, terutama pada layout yang memerlukan responsivitas dan distribusi ruang yang efisien.
Flexbox Container dan Flex Items
Untuk menggunakan Flexbox, kita perlu mengatur elemen induk (container) dan elemen anak (items).
Container diatur dengan properti display: flex;, dan items di dalamnya akan mengikuti aturan Flexbox.
Flexbox adalah sistem layout di CSS yang digunakan untuk mengatur posisi dan ukuran elemen agar lebih fleksibel dan rapi.
Untuk menggunakan Flexbox, kita perlu:
-
Flex Container → elemen induk
-
Flex Items → elemen anak di dalam container
Container diaktifkan dengan:
.container {
display: flex;
}
Semua elemen di dalam .container otomatis menjadi flex items
Artinya:
-
Elemen anak akan tersusun secara horizontal (default)
-
Mereka akan berada dalam satu baris
-
Lebih mudah diatur posisi dan jaraknya
.container {
display: flex;
background-color: #1f2937; /* dark slate */
padding: 10px;
}
.item {
background-color: white;
padding: 20px;
margin: 5px;
}
Penjelasan Contoh
-
.container→ menjadi flex container -
.item→ menjadi flex items -
Item otomatis tersusun sejajar ke samping
-
Margin memberi jarak antar item
Default Behavior Flexbox
Secara default:
-
Arah susunan → row (horizontal)
-
Item tidak turun ke bawah
-
Ukuran mengikuti isi
Setelah mengaktifkan Flexbox pada container, elemen-elemen anaknya akan otomatis menjadi flex items yang dapat kita atur posisinya.
Properti Flexbox untuk Container
1. justify-content
Properti justify-content digunakan untuk mengatur distribusi ruang di sepanjang sumbu utama (horizontal, secara default).
Beberapa nilai yang umum:
flex-start– menyusun elemen dari kiricenter– menyusun elemen di tengahspace-between– memberi ruang antar elemenspace-around– memberi ruang antar elemen dengan ruang lebih besar di luar elemen
justify-content di Flexbox
Properti justify-content digunakan untuk mengatur distribusi ruang di sepanjang sumbu utama (main axis).
Secara default, sumbu utama adalah horizontal (kiri → kanan) karena flex-direction default adalah row.
Contoh:
.container {
display: flex;
justify-content: center;
}
Artinya:
Semua flex items akan berada di tengah secara horizontal
.container {
display: flex;
justify-content: center;
background-color: #1f2937; /* dark slate */
padding: 20px;
}
.item {
background-color: white;
padding: 20px;
margin: 5px;
}
Gambaran Visual Sederhana justify-content
Misalnya ada 3 item:
flex-start:
[1][2][3]--------
center:
----[1][2][3]----
space-between:
[1]----[2]----[3]
space-around:
--[1]--[2]--[3]--
Ringkasan Singkat
justify-content mengatur posisi item di arah horizontal (default).
Mengatur jarak dan distribusi ruang
Bekerja di sepanjang main axis
Nilai-Nilai justify-content
Berikut nilai yang umum digunakan:
-
flex-start
Item disusun dari kiri (default).
justify-content: flex-start;Semua elemen mulai dari kiri.
-
center
Item berada di tengah.
justify-content: center;Semua elemen di tengah container.
-
space-between
Memberi jarak antar elemen.
justify-content: space-between;Elemen pertama di kiri.
Elemen terakhir di kanan.
Ruang hanya di antara elemen. -
space-around
Memberi ruang di sekitar elemen.
justify-content: space-around;Setiap elemen punya ruang kiri & kanan.
Ruang luar lebih kecil dibanding antar elemen.
2. align-items
Properti align-items digunakan untuk mengatur posisi elemen anak pada sumbu silang (vertikal).
Beberapa nilai yang umum:
flex-start– menyusun elemen di bagian atascenter– menyusun elemen di tengah vertikalstretch– elemen akan membentang untuk mengisi ruang
Contoh HTML Lengkap + CSS
.container {
display: flex;
align-items: center;
height: 200px;
background-color: #1f2937; /* dark slate */
}
.item {
background-color: white;
padding: 20px;
margin: 5px;
}
Penjelasan Contoh
-
Container memiliki tinggi 200px
-
align-items: center;membuat semua item berada di tengah secara vertikal -
Jika diganti
flex-start, item akan berada di atas -
Jika
stretch, item akan memenuhi tinggi container
Ringkasan Singkat
-
justify-content→ mengatur horizontal (main axis) -
align-items→ mengatur vertikal (cross axis)
Keduanya sering dipakai bersama untuk membuat elemen tepat di tengah halaman.
Nilai-Nilai align-items
-
flex-start
Item berada di atas
align-items: flex-start;Semua elemen rata atas
-
center
Item berada di tengah vertikal
align-items: center;Semua elemen di tengah container secara vertikal
-
stretch (default)
Item membentang memenuhi tinggi container (jika tidak memiliki height tetap).
align-items: stretch;Elemen otomatis menyesuaikan tinggi container
3. flex-direction
Properti flex-direction digunakan untuk mengatur arah sumbu utama, apakah elemen akan disusun secara horizontal atau vertikal.
Beberapa nilai yang umum:
row– elemen disusun horizontal (default)column– elemen disusun vertikalrow-reverse– elemen disusun horizontal terbalikcolumn-reverse– elemen disusun vertikal terbalik
-
row (default)
flex-direction: row;Elemen disusun horizontal (kiri → kanan)
-
column
flex-direction: column;Elemen disusun vertikal (atas → bawah)
-
row-reverse
flex-direction: row-reverse;Elemen disusun horizontal tapi terbalik
-
column-reverse
flex-direction: column-reverse;Elemen disusun vertikal tapi terbalik
.container {
display: flex;
flex-direction: column;
background-color: #1f2937; /* dark slate */
padding: 10px;
}
.item {
background-color: white;
padding: 20px;
margin: 5px;
}
Penjelasan Contoh
-
Container memiliki tinggi 200px
-
align-items: center;membuat semua item berada di tengah secara vertikal -
Jika diganti
flex-start, item akan berada di atas -
Jika
stretch, item akan memenuhi tinggi container
Properti Flexbox untuk Flex Items
1. flex-grow
Properti flex-grow digunakan untuk menentukan seberapa banyak elemen flex item akan tumbuh untuk mengisi ruang kosong di dalam container.
Nilai defaultnya adalah 0, artinya elemen tidak akan tumbuh.
.container {
display: flex;
width: 600px;
background-color: #1f2937; /* dark slate */
}
.item {
background-color: white;
padding: 20px;
margin: 5px;
flex-grow: 1;
}
Penjelasan Contoh flex-grow
-
Container lebar 600px
-
Semua item punya
flex-grow: 1 -
Ketiganya membagi ruang kosong secara merata
Jika salah satu diubah menjadi:
flex-grow: 2;
Item tersebut akan lebih besar.
Ringkasan Singkat flex-grow
-
flex-grow: 0;→ tidak membesar (default) -
flex-grow: 1;→ membesar untuk isi ruang kosong -
Angka menentukan rasio pertumbuhan
Cocok untuk membuat layout responsif tanpa hitung manual lebar.
2. flex-shrink
Properti flex-shrink digunakan untuk menentukan seberapa banyak elemen flex item akan mengecil ketika ruang di dalam container terbatas.
Nilai defaultnya adalah 1, yang berarti elemen dapat mengecil.
.container {
display: flex;
width: 300px;
background-color: #1f2937; /* dark slate */
}
.item {
width: 150px;
padding: 20px;
background-color: white;
margin: 5px;
flex-shrink: 1; /* coba ganti jadi 0 */
}
Perbandingan Nilai flex-shrink
-
flex-shrink: 1;→ boleh mengecil (default) -
flex-shrink: 0;→ tidak boleh mengecil -
flex-shrink: 2;→ mengecil dua kali lebih cepat dibanding 1
Ringkasan Singkat
-
flex-grow→ mengatur pembesaran -
flex-shrink→ mengatur pengecilan -
Keduanya bekerja berdasarkan rasio angka
Digunakan untuk membuat layout tetap rapi saat layar mengecil (responsive).
3. flex-basis
Properti flex-basis digunakan untuk menentukan ukuran dasar elemen flex item sebelum ruang yang tersisa dibagi.
.container {
display: flex;
width: 800px;
background-color: #1f2937; /* dark slate */
}
.item {
flex-basis: 200px;
flex-grow: 1;
margin: 5px;
padding: 20px;
background-color: white;
}
Penjelasan flex-grow
-
Setiap item mulai dari 200px
-
Jika ada ruang lebih → dibagi rata karena
flex-grow: 1
Contoh Layout Flexbox: Menu Navigasi
Misalnya, kita akan membuat menu navigasi menggunakan Flexbox:
.navbar {
display: flex;
justify-content: center;
}
.menu {
display: flex;
list-style-type: none;
}
.menu li {
margin: 0 10px;
}
Contoh Menu Navigasi Yang Sudah Di Styling
/* === Selamat Mencoba! === */
Kesalahan Umum dengan Flexbox
- Melupakan properti
flex-wrapsaat elemen fleksibel tidak muat dalam satu baris - Kesalahan dalam menentukan arah sumbu utama dengan
flex-direction - Terlalu banyak menggunakan
flex-growdan mengabaikan desain yang responsif
Ringkasan CSS Part 5
- Flexbox adalah sistem layout yang fleksibel dan responsif
- Gunakan
justify-contentdanalign-itemsuntuk mengatur posisi elemen - Kontrol ukuran dan fleksibilitas elemen dengan
flex-grow,flex-shrink, danflex-basis
Lanjutan Materi
Di CSS Part 6, kita akan membahas:
- Layout Grid – Membuat desain grid responsif
- Lebih mendalam tentang penggunaan grid untuk layout kompleks
Lanjut ke: Belajar CSS Part 6