๐ŸŽจ Phase 2 โ€” CSS
P12 ยท Pertemuan 12 dari 20

Flexbox

Menguasai CSS Flexbox untuk membuat layout satu dimensi: navbar, grid kartu responsif, dan centering konten dengan mudah.

Phase
Phase 2 โ€” CSS
Topik
CSS Fundamentals
Durasi
90 Menit
Deadline Tugas
Sebelum Pertemuan Berikutnya โ€” Pukul 23.59 WIB
๐ŸŽฏTujuan Pembelajaran
  • 01Memahami konsep flex container dan flex item
  • 02Menggunakan flex-direction: row, column, row-reverse
  • 03Menguasai justify-content: flex-start, center, space-between, space-around
  • 04Menguasai align-items: stretch, center, flex-start, flex-end
  • 05Menggunakan flex-wrap dan gap
  • 06Memahami flex-grow, flex-shrink, flex-basis
๐Ÿ“–Sub-topik & Materi
  • 01Flex container (parent) vs flex items (children)
  • 02flex-direction: row (default), column, row-reverse, column-reverse
  • 03justify-content: flex-start, center, space-between, space-around, space-evenly
  • 04align-items: stretch (default), center, flex-start, flex-end, baseline
  • 05flex-wrap: nowrap (default) vs wrap; gap untuk spacing
  • 06flex: grow shrink basis โ€” shorthand untuk mengontrol ukuran item
๐Ÿ’กPenjelasan Konsep
Konsep 1
Flexbox: Container dan Item
Flexbox adalah sistem layout 1 dimensi (satu baris atau kolom). Properti Flexbox dibagi dua: properti CONTAINER (ditulis di parent dengan display: flex) dan properti ITEM (ditulis di child). Jangan bingung keduanya โ€” flex-direction, justify-content, align-items ada di container; flex-grow, flex-shrink, align-self ada di item.
css
/* Container */
.navbar {
  display: flex;
  flex-direction: row;       /* default: horizontal */
  justify-content: space-between; /* distribusi di sumbu utama */
  align-items: center;       /* rata di sumbu silang */
  gap: 16px;                 /* jarak antar item */
}

/* Item */
.nav-logo {
  flex-shrink: 0; /* tidak boleh mengecil */
}

.nav-links {
  flex: 1; /* tumbuh mengisi sisa ruang */
}
Konsep 2
justify-content vs align-items
justify-content mengatur distribusi item di sumbu UTAMA (horizontal untuk row, vertikal untuk column). align-items mengatur rata item di sumbu SILANG (vertikal untuk row, horizontal untuk column). Untuk centering sempurna di tengah layar, gunakan keduanya dengan nilai center.
css
/* Centering sempurna */
.hero {
  display: flex;
  justify-content: center; /* horizontal: tengah */
  align-items: center;     /* vertikal: tengah */
  min-height: 100vh;
}

/* Spread items: logo kiri, menu kanan */
.navbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

/* Wrap: pindah baris jika tidak cukup */
.kartu-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 24px;
}
.kartu-grid .kartu {
  flex: 1 1 280px; /* tumbuh, kecil, min 280px */
}
๐Ÿ’ปContoh Kode Lengkap
css
/* Navbar dengan Flexbox */
.navbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 16px 32px;
  background: #1A4A8A;
}
.nav-links {
  display: flex;
  gap: 24px;
  list-style: none;
}

/* Grid Kartu Responsif */
.grid-kartu {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
}
.kartu {
  flex: 1 1 280px; /* grow: 1 shrink:1 basis:280px */
  /* Minimum 280px, tapi bisa membesar mengisi ruang */
}

/* Center Vertikal + Horizontal */
.hero {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh;
}
โšกLatihan Kelas ยท Buat layout navigasi horizontal dan grid kartu menggunakan Flexbox
1
Ubah <nav> menjadi flex container dengan justify-content: space-between
2
Buat ul.nav-links sebagai flex container dengan gap: 24px
3
Buat section berisi 4 kartu dalam div.grid-kartu dengan flex-wrap: wrap
4
Set flex: 1 1 250px pada setiap kartu
5
Uji dengan mengecilkan ukuran browser โ€” kartu harus wrap ke baris baru
๐Ÿ“ Tugas 3.5 โ€” Flexbox Layout
โฐ Deadline: Sebelum Pertemuan Berikutnya โ€” Pukul 23.59 WIB

Buat halaman portofolio sederhana dengan: (1) navbar Flexbox (logo kiri, menu kanan), (2) hero section yang di-center sempurna, (3) section "skills" dengan kartu-kartu dalam flex grid yang wrap otomatis.

Kriteria PenilaianPoin
Navbar menggunakan Flexbox dengan logo dan menu terpisah25
Hero section di-center sempurna (vertikal + horizontal)25
Grid kartu menggunakan flex-wrap dan wrap saat layar mengecil30
gap digunakan (bukan margin) untuk spacing antar item20
Total100
โš ๏ธKesalahan yang Sering Dibuat
Menerapkan flex properties ke item bukan container (menulis justify-content di .item bukan .container)
Menggunakan margin untuk jarak antar flex item โ€” gunakan gap yang jauh lebih bersih
Lupa flex-wrap: wrap โ€” item meluber keluar container saat layar kecil
Salah arah: flex-direction: column mengubah sumbu โ€” justify-content jadi vertikal, align-items jadi horizontal
Menggunakan Flexbox untuk layout 2D kompleks โ€” gunakan CSS Grid untuk kasus tersebut
๐Ÿ’ก Tips Instruktur
flex-wrap: wrap membuat item pindah baris saat tidak cukup ruang
gap jauh lebih bersih dari margin untuk spacing di flex/grid
align-items: center untuk centering vertikal dalam flex row
flex: 1 berarti item akan tumbuh sama rata mengisi ruang yang tersedia
๐Ÿ“‹ Checklist Belajar
Pahami konsep sebelum latihan
Coba kode sendiri tanpa copy-paste
Kerjakan tugas sebelum deadline
Tanya instruktur jika ada yang belum jelas
Parelabs Academy - Kursus Bahasa Inggris Terbaik Offline & Online