Flexbox adalah salah satu fitur CSS paling populer untuk membuat layout halaman web. Dengan Flexbox, kamu bisa mengatur posisi elemen secara horizontal maupun vertikal dengan mudah tanpa perlu menggunakan float atau positioning yang rumit. Artikel ini akan membahas cara menggunakan Flexbox dari dasar hingga contoh praktis yang bisa langsung kamu coba.
Apa Itu Flexbox?
Flexbox (Flexible Box Layout) adalah model tata letak CSS yang memungkinkan elemen di dalam kontainer diatur secara fleksibel. Ada dua konsep utama dalam Flexbox:
- Flex Container โ elemen induk yang diberi properti
display: flex. - Flex Item โ elemen anak langsung di dalam flex container.
Cara Mengaktifkan Flexbox
Untuk mengaktifkan Flexbox, cukup tambahkan display: flex pada elemen container:
.container {
display: flex;
}
Semua elemen anak di dalam .container otomatis menjadi flex item.
Properti Utama Flex Container
Berikut properti-properti penting yang diterapkan pada flex container:
1. flex-direction
Menentukan arah susunan flex item.
.container {
display: flex;
flex-direction: row; /* default: kiri ke kanan */
/* flex-direction: column; */ /* atas ke bawah */
/* flex-direction: row-reverse; */
/* flex-direction: column-reverse; */
}
2. justify-content
Mengatur penyelarasan flex item sepanjang sumbu utama (horizontal jika row).
.container {
display: flex;
justify-content: center; /* tengah */
/* justify-content: flex-start; */ /* kiri (default) */
/* justify-content: flex-end; */ /* kanan */
/* justify-content: space-between; */ /* jarak rata */
/* justify-content: space-around; */
}
3. align-items
Mengatur penyelarasan flex item sepanjang sumbu silang (vertikal jika row).
.container {
display: flex;
align-items: center; /* tengah vertikal */
/* align-items: flex-start; */
/* align-items: flex-end; */
/* align-items: stretch; */ /* default */
}
4. flex-wrap
Mengizinkan flex item untuk pindah ke baris baru jika tidak muat.
.container {
display: flex;
flex-wrap: wrap; /* item pindah baris jika overflow */
}
Properti Flex Item
Selain properti container, ada properti yang diterapkan langsung pada flex item:
flex-grow, flex-shrink, flex-basis
.item {
flex-grow: 1; /* item bisa membesar mengisi ruang */
flex-shrink: 1; /* item bisa mengecil jika perlu */
flex-basis: 200px; /* ukuran awal item */
}
/* Shorthand */
.item {
flex: 1 1 200px;
}
Contoh Praktis: Layout Tiga Kolom
Berikut contoh membuat layout tiga kolom yang umum digunakan pada website:
<!-- HTML -->
<div class="container">
<div class="kolom">Kolom 1</div>
<div class="kolom">Kolom 2</div>
<div class="kolom">Kolom 3</div>
</div>
<!-- CSS -->
<style>
.container {
display: flex;
gap: 16px;
}
.kolom {
flex: 1;
background: #f0f4ff;
padding: 20px;
border-radius: 8px;
text-align: center;
}
</style>
Contoh Praktis: Memusatkan Elemen Secara Horizontal dan Vertikal
Salah satu kegunaan paling populer Flexbox adalah memusatkan konten secara sempurna:
<div class="center-box">
<p>Saya di tengah!</p>
</div>
<style>
.center-box {
display: flex;
justify-content: center;
align-items: center;
height: 300px;
background: #e8f5e9;
}
</style>
Contoh: Navbar dengan Flexbox
Flexbox juga sangat cocok untuk membuat navigasi bar:
<nav class="navbar">
<div class="logo">MyBrand</div>
<ul class="menu">
<li><a href="#">Beranda</a></li>
<li><a href="#">Tentang</a></li>
<li><a href="#">Kontak</a></li>
</ul>
</nav>
<style>
.navbar {
display: flex;
justify-content: space-between;
align-items: center;
padding: 16px 32px;
background: #1e293b;
color: white;
}
.menu {
display: flex;
list-style: none;
gap: 24px;
margin: 0;
padding: 0;
}
.menu a {
color: white;
text-decoration: none;
}
</style>
Tips Menggunakan Flexbox
- Gunakan properti
gapuntuk memberi jarak antar item tanpa perlu margin. - Kombinasikan
flex-wrap: wrapdenganflex-basisuntuk layout responsif sederhana. - Gunakan
orderpada flex item untuk mengubah urutan tampilan tanpa mengubah HTML. - Flexbox bekerja paling baik untuk layout satu dimensi (baris atau kolom). Untuk dua dimensi, pertimbangkan CSS Grid.
Kesimpulan
Flexbox adalah alat yang sangat powerful untuk membuat layout web yang rapi dan fleksibel. Dengan memahami properti seperti display: flex, justify-content, align-items, dan flex-wrap, kamu sudah bisa menangani sebagian besar kebutuhan layout modern. Mulai praktikkan dengan contoh-contoh di atas, dan kamu akan semakin terbiasa menggunakannya dalam proyek nyata.