Box model, Flexbox, Grid, responsive design, dan saat kapan Tailwind masuk akal — dibangun dari nol.
transform & opacity hanya memicu re-composite — jauh lebih murah dari width atau height yang memicu re-layout penuh.
Ruang transparan di luar border. Menciptakan jarak antar-elemen. Collapse secara vertikal.
Garis terlihat. Shorthand: border: 2px solid var(--coral);
Ruang di dalam border. Background color terlihat di sini.
Area teks/gambar. Ukurannya = width dan height.
width: 200px + padding: 20px + border: 5px = 250px total
width: 200px = total 200px. Content = 200 − padding − border.
*, *::before, *::after { box-sizing: border-box; }
Vertical margin antara dua elemen bergabung menjadi nilai terbesar:
Ketika beberapa aturan CSS berbenturan, specificity menentukan pemenang. Format: (a, b, c, d)
!important untuk menang secara paksa — ini memutus mekanisme cascade dan membuat CSS sulit di-maintain.
Child elements mewarisi otomatis dari parent:
Harus didefinisikan ulang di setiap elemen:
border diwariskan — setiap child element akan punya garis pinggir!
flex-start — kumpul di awal
center — tengah main axis
space-between — item pertama & terakhir di ujung
space-evenly — ruang rata semua sisi
align-items bekerja di cross axis (sumbu tegak lurus). Ketika flex-direction: column, sumbu bertukar!
flex: 1 pada semua item → semua sama besar, mengisi ruang tersedia.
fr (fraction) = bagian dari ruang tersedia. 2fr 1fr → kolom pertama 2× lipat kolom kedua.
| Kriteria | Flexbox | Grid |
|---|---|---|
| Dimensi | Satu (baris atau kolom) | Dua (baris dan kolom) |
| Kontrol | Item menentukan ukurannya | Container menentukan slot |
| Use case | Navbar, toolbar, card row, form | Page layout, dashboard, gallery |
| Responsif | flex-wrap otomatis |
auto-fit + minmax() |
| Alignment | Sangat baik di satu sumbu | Sangat baik di kedua sumbu |
Tulis CSS untuk layar kecil terlebih dahulu, lalu min-width untuk layar besar. Lebih mudah menambahkan kompleksitas daripada menghapusnya.
auto-fit + minmax()Adakah URL internal atau token tersembunyi di background-image atau @font-face? CSS Anda bisa dibaca siapa saja.
.btn-primary vs .blue-box. Mobile → tablet → desktop. Developer lain paham tanpa komentar?
Hindari box-shadow berlebihan di banyak elemen. Gunakan transform untuk animasi — tidak memicu re-layout.
Jika tambah 10 komponen baru, apakah pola Flexbox/Grid tetap konsisten? Hindari px hardcoded yang rusak di ukuran berbeda.
Gunakan CSS custom properties untuk warna dan spacing. Pola berulang = kandidat variabel atau class yang konsisten.
box-sizing: border-box global. Width yang Anda tulis = total ukuran.
min-width media queries — bukan sebaliknya.
Selanjutnya: Bab 4 — JavaScript: DOM, Events, dan Interaktivitas