CSS (Cascading Style Sheets) adalah bahasa yang mengatur tampilan halaman web: warna, tipografi, layout, animasi, hingga penyesuaian terhadap berbagai perangkat. Pada Course ini, kita akan membangun pemahaman yang berlapis: dimulai dari cara kerja CSS, selector dan cascade, box model, lalu naik ke layout modern seperti flexbox dan grid, responsive design, hingga arsitektur CSS dan design system.

Setiap konsep disertai contoh kode yang dapat diunduh dan diuji. Demo yang menyertai chapter memuat penanda uji otomatis sehingga perilaku yang dijelaskan telah diverifikasi di browser. Daftar isi lengkap dan status pengerjaan dapat dipantau di BACKLOG_CSS.md.

Bab 5 Values dan Units

# Colors

Kenali berbagai notasi nilai warna CSS, dari named colors dan hex hingga rgb(), hsl(), dan oklch().

Buka →
# Lengths

Pelajari cara menuliskan nilai panjang di CSS beserta konversi antara px, em, dan rem.

Buka →
# Absolute dan Relative Units

Bandingkan kelompok satuan absolut (px, pt, cm, in) dengan satuan relatif (em, rem, ch, ex) dan ketahui kapan masing-masing tepat dipakai.

Buka →
# Percentages

Pahami nilai persentase di CSS beserta rujukan perhitungannya: lebar, tinggi, padding, dan font-size.

Buka →
# Viewport Units

Gunakan satuan viewport (vw, vh, vmin, vmax) serta varian dinamisnya (dvh, svh, lvh) untuk mengukur elemen relatif terhadap jendela browser.

Buka →
# Container Query Units

Kenali satuan container query (cqw, cqi, cqh, cqb, cqmin, cqmax) yang mengukur elemen relatif terhadap query container terdekatnya.

Buka →
# Functions

Kenali function bawaan CSS — dari rgb(), hsl(), dan url() hingga calc(), min(), max(), clamp(), dan var() — serta cara menggabungkannya.

Buka →
# Custom Properties

Definisikan variabel CSS sendiri dengan custom properties, lengkap dengan nilai cadangan, pewarisan, dan perilaku saat nilai tidak valid.

Buka →
# calc(), min(), max(), dan clamp()

Hitung nilai CSS secara langsung dengan calc(), dan kendalikan batas atas-bawahnya menggunakan min(), max(), serta clamp().

Buka →
# Logical Properties

Gunakan logical properties seperti margin-inline-start, padding-block, dan inline-size untuk menata elemen berdasarkan alur teks, bukan sisi fisik.

Buka →

Bab 7 Typography

Bab 13 Grid

# Grid Container dan Grid Items

Kenali dua peran utama dalam CSS Grid: container yang membentuk kisi dan item yang mengisinya, termasuk baris implicit yang terbentuk otomatis.

Buka →
# Grid Template Columns dan Rows

Tentukan struktur kisi secara eksplisit dengan grid-template-columns dan grid-template-rows, serta pahami batas antara track eksplisit dan implicit.

Buka →
# Fr Unit

Gunakan satuan fr untuk mendistribusikan ruang bebas grid secara proporsional dan pahami urutan perhitungannya.

Buka →
# Repeat dan Minmax

Reringkas daftar track dengan repeat() dan kendalikan batas ukuran track dengan minmax(), termasuk pola auto-fill yang responsif.

Buka →
# Grid Lines dan Grid Areas

Tempatkan item secara presisi menggunakan nomor grid line, nama garis, serta grid-template-areas dengan grid-area.

Buka →
# Auto Placement

Pahami algoritma penempatan otomatis grid: urutan pengisian sel, grid-auto-flow, serta perbedaan mode sparse dan dense.

Buka →
# Auto-fit dan Auto-fill

Bandingkan kata kunci auto-fill dan auto-fit pada repeat() dan pelajari kapan track kosong dipertahankan atau di-collapse.

Buka →
# Alignment dan Gap

Atur perataan item dan track pada dua sumbu dengan justify-items, align-items, justify-content, dan align-content, serta beri jarak lewat gap.

Buka →
# Subgrid

Warisi track grid induk ke dalam grid anak dengan subgrid agar baris antar kartu sejajar sempurna.

Buka →
# Grid Layout Patterns

Terapkan resep grid yang teruji: holy grail dua belas kolom, galeri kartu responsif, dan dashboard dengan area bernama.

Buka →

Bab 20 Modern CSS

# Nesting

Tulis selector anak dan varian di dalam aturan induknya dengan nesting bawaan CSS, lengkap dengan tanda & untuk konteks eksplisit.

Buka →
# Custom Properties dan Theming

Bangun tema terang dan gelap dengan custom properties pada :root, lalu tukar seluruh palet lewat satu atribut data-tema.

Buka →
# Cascade Layers

Organisasi stylesheet proyek nyata dengan @layer — reset, base, components di dalam layer, utilities unlayered sebagai lapisan penimpa.

Buka →
# :is(), :where(), dan :has()

Gabungkan :is() untuk pengelompokan ringkas, :where() untuk gaya nol specificity, dan :has() untuk memilih elemen berdasarkan isinya.

Buka →
# Aspect Ratio

Kunci rasio lebar-terhadap-tinggi sebuah kotak dengan properti aspect-ratio sehingga tata letak stabil sebelum konten maupun gambar selesai dimuat.

Buka →
# Object Fit dan Object Position

Kendalikan cara gambar mengisi kotaknya dengan object-fit — fill, cover, contain, none — dan arahkan fokusnya dengan object-position.

Buka →
# Scroll Snap

Kunci posisi gulir ke titik-titik tertentu dengan scroll-snap-type pada container dan scroll-snap-align pada item, tanpa JavaScript.

Buka →
# Scroll-driven Animations

Jalankan animasi yang digerakkan posisi gulir dengan animation-timeline: scroll() dan view(), tanpa event scroll dan tanpa JavaScript.

Buka →
# Anchor Positioning

Tempatkan tooltip dan popover pada elemen pemicunya dengan anchor positioning — anchor-name, position-anchor, dan position-area.

Buka →
# Progressive Enhancement

Susun stylesheet berlapis dengan pendekatan progressive enhancement — gaya dasar yang selalu aktif, lalu peningkatan di dalam @supports.

Buka →