Warna dan satuan
Teks abu-abu muda #bbbbbb di atas putih punya rasio kontras 1.92 banding 1. WCAG meminta paling sedikit 4.5 banding 1 untuk teks biasa.
Cara menulis warna
CSS menerima warna dalam beberapa notasi, dan semuanya berujung pada hal yang sama: takaran cahaya merah, hijau, dan biru di layar. Warna bernama seperti red, navy, atau rebeccapurple mudah dibaca, tetapi pilihannya terbatas. Notasi hex menulis merah, hijau, dan biru masing-masing sebagai dua digit heksadesimal, dari 00 sampai ff (0 sampai 255): #1a5fb4 berarti merah 26, hijau 95, dan biru 180, yaitu biru sedang. rgb(26 95 180) menyatakan hal yang sama dalam desimal. hsl(210 80% 40%) menggambarkan warna lewat rona (sudut pada roda warna, dengan 0 merah, 120 hijau, dan 240 biru), saturasi, dan kecerahan. Dengan begitu, kamu mudah membuat corak yang lebih terang atau lebih gelap dari rona yang sama cukup dengan mengubah satu angka.
color: navy; color: #1a5fb4; /* same as #1A5FB4 */ color: #36c; /* short form of #3366cc */ color: rgb(26 95 180); color: rgb(26 95 180 / 50%); /* half transparent */ color: hsl(210 80% 40%); background-color: transparent;
Nilai keempat, sesudah garis miring, mengatur kanal alfa: rgb(0 0 0 / 50%) adalah hitam dengan opasitas setengah, jadi apa pun yang ada di belakangnya ikut terlihat. color mengatur warna teks, background-color isian di belakang elemen, dan border-color warna bingkainya. Kata kunci currentColor berarti warna teks elemen itu, praktis untuk ikon dan bingkai yang harus serasi dengan teksnya.
Kontras itu wajib
Teks yang kecerahannya terlalu mirip dengan latar sulit dibaca banyak orang: siapa pun yang penglihatannya lemah, pembaca lanjut usia, dan semua orang yang membaca ponsel di bawah sinar matahari. WCAG 2.2, pedoman aksesibilitas dari W3C, mengukurnya sebagai rasio kontras dari 1 banding 1 (tanpa perbedaan) sampai 21 banding 1 (hitam di atas putih). Kriteria keberhasilan 1.4.3 meminta paling sedikit 4.5 banding 1 untuk teks biasa dan 3 banding 1 untuk teks besar, yang menurut WCAG berukuran paling sedikit 18 poin, atau 14 poin tebal. Abu-abu tua #767676 di atas putih pas lolos dengan 4.54 banding 1; #777777 pas gagal dengan 4.48. Alat pengembang di browser menampilkan rasionya saat kamu memeriksa elemen teks, jadi tidak perlu menebak.
Warna juga jangan pernah menjadi satu-satunya cara menyampaikan informasi. Formulir yang menandai kesalahan hanya dengan mengubah bingkai menjadi merah meninggalkan semua orang yang sulit melihat warna merah; tambahkan juga pesan atau ikon.
Satuan absolut dan relatif
Panjang memerlukan satuan, kecuali nol. px adalah piksel CSS, satuan tetap; di layar berkerapatan tinggi, satu piksel CSS mencakup beberapa piksel fisik, sehingga ukurannya kira-kira tetap sama di mata. Satuan relatif berubah mengikuti hal lain. em relatif terhadap ukuran fon elemen itu sendiri, jadi padding: 0.5em pada teks 20 piksel sama dengan 10 piksel. rem relatif terhadap ukuran fon akar (html), yang di browser bernilai 16 piksel kecuali pembaca mengubahnya, jadi 1.25rem biasanya 20 piksel. % relatif terhadap induk, biasanya lebarnya. vw dan vh adalah seperseratus lebar dan tinggi viewport, sedangkan ch kira-kira selebar digit nol pada fon yang sedang dipakai.
Mana yang dipakai? Mengatur ukuran teks dengan rem menghormati pembaca: jika seseorang mengatur browsernya ke teks yang lebih besar, semua yang berukuran rem ikut membesar, sedangkan teks yang dipatok dalam px belum tentu. Padding dalam em membesar bersama teks yang dikelilinginya. Piksel cocok untuk hal yang tidak perlu ikut berskala, misalnya bingkai 1 piksel.
| warna hex | #rrggbb, setiap pasangan 00 sampai ff |
| hsl() | Sudut rona, saturasi %, kecerahan % |
| alfa | Opasitas, sesudah garis miring: rgb(0 0 0 / 50%) |
| rasio kontras | 4.5:1 teks biasa, 3:1 teks besar (WCAG 1.4.3) |
| px | Piksel CSS, tetap |
| em | Relatif terhadap ukuran fon elemen |
| rem | Relatif terhadap ukuran fon akar (bawaan 16px) |
| vw / vh | 1% lebar / tinggi viewport |
- Berapa banyak merah dalam
#ff8000, pada skala 0 sampai 255? - Berapa banyak hijau dalam
#ff8000? - Pada hsl(), sudut rona berapa yang merupakan hijau murni?
- Berapa rasio kontras minimum yang diminta WCAG 1.4.3 untuk teks biasa?
- 4.5 to 1
- 3 to 1
- 7 to 1
- Apakah #777777 di atas putih memenuhi syarat 4.5 banding 1?
- Tidak, nilainya 4.48 banding 1
- Ya, nilainya 4.54 banding 1
- Ya, abu-abu apa pun lolos
- Ukuran fon akar 16px. Berapa piksel 1.5rem?
- Sebuah elemen punya font-size: 20px dan padding: 0.5em. Berapa piksel padding-nya?
- Viewport selebar 400px. Berapa lebar 50vw?
- Mengapa ukuran teks diatur dengan rem, bukan px?
- Ia mengikuti pengaturan ukuran teks di browser pembaca
- Ia selalu lebih kecil
- Ia lebih cepat dimuat
- Sebuah formulir menandai kesalahan hanya dengan bingkai merah. Apa yang kurang?
- Pesan atau ikon, karena warna saja tidak cukup
- Merah yang lebih gelap
- Tidak ada
- Warna bernama, hex, rgb(), dan hsl(); garis miring menambahkan alfa.
- WCAG 1.4.3: 4.5:1 untuk teks biasa, 3:1 untuk teks besar; jangan hanya mengandalkan warna.
- px tetap; em mengikuti ukuran fon elemen; rem mengikuti akar (bawaan 16px).
Sumber kursus ini (6)
- W3C CSS Working Group specifications: CSS Snapshot 2025, Selectors Level 4, CSS Cascading and Inheritance Level 5, CSS Color Level 4, CSS Values and Units Level 4, CSS Box Model Level 3, CSS Box Sizing Level 3, CSS Fonts Level 4, CSS Flexible Box Layout Level 1, CSS Grid Layout Level 2, Media Queries Level 4 and Level 5 (w3.org/TR/, checked 2026-10-17)
- MDN Web Docs, Learn web development: CSS styling basics and CSS layout, and the CSS reference (developer.mozilla.org/en-US/docs/Learn_web_development/Core/Styling_basics, .../Core/CSS_layout, developer.mozilla.org/en-US/docs/Web/CSS, checked 2026-10-17)
- W3C, CSS history and CSS1 Recommendation of 17 December 1996 (w3.org/Style/CSS20/history.html, w3.org/press-releases/1996/css1-rec, checked 2026-10-17)
- W3C WCAG 2.2, success criteria 1.4.3 Contrast (Minimum)
- 1.4.8 Visual Presentation, 1.4.10 Reflow, 1.4.12 Text Spacing (w3.org/TR/WCAG22/, checked 2026-10-17)
- every code exercise checked with a Playwright probe against a reference solution.
Diperiksa: 2026-10-17