Color Picking Methods — UI/UX

Cara Memilih Warna untuk UI HSL color wheel with 12 hue slices at saturation 70%, lightness 55%.HSLHue wheel: warna berseberangan = komplementer. Warna…

Memilih warna untuk UI bukan cuma soal selera: ada cara yang bisa diulang dan dicek. Bayangin kartu contoh warna cat di toko bangunan. Satu strip berisi tujuh kotak dari hijau paling muda sampai paling tua, semuanya hijau yang sama, cuma dicampur lebih banyak putih atau lebih banyak hitam. Di UI, strip itu disebut skala warna: satu warna brand diturunkan jadi versi terang (tint) dan gelap (shade), dan tiap versi punya tugasnya.

🧪 Tebakan cepat: hsl(142 72% 50%) (hijau) dan hsl(221 83% 53%) (biru) sama-sama punya lightness sekitar 50%. Kalau keduanya dipakai sebagai latar tombol dengan teks putih, apakah teksnya sama mudah dibaca? Jawabannya ada di bagian "Lightness bukan terang yang dilihat mata".

HSL: tiga angka yang bisa kamu atur

Hex seperti #15803d susah diubah dengan kepala. HSL memecah warna jadi tiga angka yang masuk akal:

Hijau Bu Sri #15803d dalam HSL kira-kira hsl(142 72% 29%): hue 142, saturasi 72%, lightness 29%. Di CSS modern ditulis dengan spasi; versi lama dengan koma, hsl(142, 72%, 29%), juga jalan.

Untuk membuat shade (versi lebih gelap), turunkan Lightness. Untuk tint (lebih terang), naikkan Lightness. Hue dan Saturation tetap, jadi warnanya tetap "hijau yang sama".

Satu warna jadi satu skala: 50 sampai 900

Skala ditulis dengan angka 50 (paling terang) sampai 900 (paling gelap), seperti di Tailwind. Ini skala hijau Bu Sri: hue dan saturasi tetap, lightness turun bertahap:

:root {
  --green-50:  hsl(142 72% 97%);  /* latar yang sangat lembut */
  --green-100: hsl(142 72% 93%);
  --green-200: hsl(142 72% 85%);
  --green-300: hsl(142 72% 74%);
  --green-400: hsl(142 72% 58%);
  --green-500: hsl(142 72% 45%);
  --green-600: hsl(142 72% 36%);
  --green-700: #15803d;           /* brand: hsl(142 72% 29%), latar tombol */
  --green-800: hsl(142 72% 24%);
  --green-900: hsl(142 72% 20%);  /* teks hijau di atas latar terang */
}

Tiap step dicek dengan teks putih di atasnya. Rasio kontras dan batas 4,5:1 sudah kamu kenal dari pelajaran hierarki teks:

Step Lightness Hex Teks putih
50 97% #f2fdf6 1,04:1
300 74% #8decb0 1,42:1
500 45% #20c55d 2,28:1
600 36% #1a9e4a 3,48:1
700 29% #15803d 5,02:1, lolos
800 24% #116931 6,80:1
900 20% #0e5829 8,58:1

Lightness bukan terang yang dilihat mata

Lightness HSL itu angka matematika, bukan terang yang dirasakan mata. Hitung kontrasnya dengan teks putih:

Warna Hex Teks putih
hsl(142 72% 50%) #24db67 1,84:1, gagal
hsl(221 83% 53%) #2563EB 5,17:1, lolos

Jadi jawaban tebakannya: gak sama. Teks putih di biru terbaca, di hijau nyaris hilang. Itu jawaban tebakannya. Mata kita jauh lebih peka ke hijau daripada ke biru: di rumus luminans WCAG, hijau diberi bobot 0,7152, merah 0,2126, dan biru cuma 0,0722. Hijau dengan lightness 50% terlihat jauh lebih terang daripada biru dengan lightness 50%.

Akibatnya, step pertama yang lolos dengan teks putih berpindah-pindah menurut hue. Dengan saturasi 72% dan lightness yang sama seperti tabel di atas: biru (hue 240) sudah lolos di step 400, hijau baru di 700, kuning (hue 60) baru di 800. Pilih dengan HSL, lalu selalu ukur kontrasnya. CSS juga punya oklch(), yang angka lightness-nya lebih dekat ke terang yang dilihat mata, tapi kontrasnya tetap harus diukur.

Mengambil warna dari foto

Cara lain mencari warna: ambil dari foto tempatnya sendiri. Figma punya pipet (eyedropper), dan color picker di DevTools browser juga punya. Lab di pelajaran ini memakai gambar pemandangan pagi dari teras Homestay Kabut:

Diambil dari HSL Dipakai untuk
Kabut di langit hsl(210 25% 91%) hue netral: abu-abu kebiruan
Ladang kentang hsl(142 24% 48%) hue brand: hijau 142

Hati-hati, saturasi juga mengubah kontras: di lightness 29%, hijau dengan saturasi 100% (#009436) cuma 3,97:1. Setiap kali mengubah salah satu angka, ukur lagi.

Empat peran warna di palet

Palet UI biasanya punya empat kelompok:

  1. Primary: warna brand dengan skalanya. Di sini hijau #15803d.
  2. Neutral: abu-abu untuk teks, garis, dan latar. Di sini abu-abu kebiruan sewarna kabut.
  3. Accent: warna kedua yang dipakai sedikit, opsional. Homestay Kabut sengaja gak punya, jadi hijau tetap satu-satunya warna yang menonjol.
  4. Semantic: warna untuk status. Merah untuk error (misalnya #b91c1c, 6,47:1 di atas putih), kuning atau oranye untuk peringatan, hijau untuk sukses, biru untuk info.

Berapa banyak tiap warna dipakai di satu layar dibahas di pelajaran prioritas warna, termasuk aturan 60-30-10.

⚠️ Jebakan yang sering ketemu

TL;DR: HSL (Hue, Saturation, Lightness) memecah warna jadi tiga angka. Shade dibuat dengan menurunkan Lightness, tint dengan menaikkannya; Hue dan Saturation tetap. Dari satu warna brand, buat skala 50 sampai 900 dan cek tiap step dengan teks putih: untuk hijau Bu Sri, step pertama yang lolos 4,5:1 adalah 700 (#15803d, 5,02:1). Lightness HSL bukan terang yang dilihat mata (hijau 50% cuma 1,84:1, biru 53% 5,17:1), jadi selalu ukur kontrasnya. Dari foto, ambil hue-nya: kabut memberi hue 210 untuk abu-abu, ladang kentang memberi hue 142 untuk hijau. Palet punya empat peran: primary, neutral, accent (opsional), dan semantic.

Yang akan kamu pelajari