Menu

Warna CSS: Nama, Hex, RGB, RGBA, HSL, Transparansi

Semua cara menulis warna di CSS: nama warna, kode hex, rgb() dan rgba(), hsl(), transparansi dengan alpha channel, currentColor, serta oklch() dan color-mix() yang lebih baru. Masing-masing dengan contoh langsung dan sebuah konverter.

Halaman ini dilengkapi editor yang bisa dijalankan. Edit, jalankan, dan lihat output-nya seketika.

Cara menulis warna di CSS

Setiap properti yang menerima warna (color, background-color, border-color, bayangan, fill SVG) menerima format yang sama. Empat contoh warna pertama adalah biru yang sama yang ditulis dengan empat cara, dan yang kelima adalah nama warna yang hampir sama:

FormatContohPaling cocok untuk
Namatomato, rebeccapurpleUji cepat dan prototipe
Hex#2563eb, #25eMenyalin dari alat desain
rgb()rgb(37 99 235)Menambahkan transparansi, bekerja dari nilai RGB
hsl()hsl(221 83% 53%)Membuat versi gelap dan terang dari satu warna
oklch()oklch(55% 0.2 262)Palet dengan kecerahan yang terlihat merata
Kata kuncitransparent, currentColorLihat bagian di bawah

Warna hex

Warna hex adalah # yang diikuti merah, hijau, dan biru, masing-masing sebagai dua digit heksadesimal, dari 00 sampai ff. Tiga bentuk berikut adalah singkatan atau perluasannya:

  • #rgb: setiap digit digandakan, jadi #25e sama dengan #2255ee.
  • #rrggbbaa: pasangan terakhir adalah alpha, jadi #2563eb80 kira-kira 50% tidak transparan.
  • #rgba: bentuk singkat dengan alpha.

Hex tidak peka huruf besar kecil: #2563EB dan #2563eb adalah warna yang sama.

rgb() dan rgba()

rgb() menerima merah, hijau, dan biru dari 0 sampai 255 (atau 0% sampai 100%). Nilai keempat yang opsional setelah garis miring adalah alpha, dari 0 (tidak terlihat) sampai 1, atau 0% sampai 100%.

color: rgb(37 99 235);          /* modern space syntax */
color: rgb(37 99 235 / 50%);    /* half transparent */
color: rgba(37, 99, 235, 0.5);  /* older comma syntax, same result */

rgba() dan rgb() sekarang adalah fungsi yang sama: keduanya menerima kedua sintaks dan alpha yang opsional. Kode lama memakai rgba() saat butuh transparansi, dan kode itu tetap berfungsi.

hsl(): format yang paling mudah disesuaikan

hsl() menjelaskan warna seperti cara orang memikirkannya: hue dari roda warna, saturation, dan lightness. Pertahankan hue dan ubah lightness untuk mendapatkan satu skala lengkap:

Baris pertama mempertahankan hue 221 dan saturation 83% lalu hanya mengubah lightness. Baris kedua berkeliling roda warna dengan saturation dan lightness yang sama.

Transparansi: alpha vs opacity

Alpha channel membuat satu warna tembus pandang. opacity membuat seluruh elemen tembus pandang, termasuk teks dan anak-anaknya:

transparent adalah kata kunci untuk hitam yang sepenuhnya transparan, rgb(0 0 0 / 0). Ini adalah background default sebagian besar elemen.

currentColor

currentColor sama dengan color milik elemen itu sendiri. Tombol yang border, ikon, dan teksnya semua memakai nilai ini bisa mengubah semuanya dengan satu deklarasi:

.button {
  color: #16a34a;
  border: 2px solid currentColor;
}
.button svg { fill: currentColor; }

Border sudah memakai currentColor secara default, itulah sebabnya border: 2px solid tanpa warna akan sama dengan warna teks.

Coba warna apa saja

Ketik warna dalam format apa pun. Browser membacanya dan menampilkan hasil hitungannya; warna yang tidak valid membuat contoh warnanya tidak berubah.

Coba tomato, #0f0, #2563eb80, rgb(0 0 0 / 25%), oklch(70% 0.15 150), dan color-mix(in srgb, #2563eb, white 50%).

Fungsi warna yang lebih baru

  • oklch(L C H): lightness, chroma, dan hue dalam ruang warna yang dirancang agar kecerahan yang sama terlihat sama terangnya. Palet yang dibuat dengannya punya lebih sedikit langkah tengah yang kusam dibanding palet HSL.
  • color-mix(in srgb, A, B 30%): mencampur dua warna. Dengan white atau black, fungsi ini membuat versi terang dan gelap dari satu warna brand, dan berfungsi dengan variabel CSS: color-mix(in srgb, var(--brand), white 80%).

Keduanya berfungsi di Chrome, Firefox, dan Safari versi saat ini. Simpan warna brand di variabel CSS supaya format yang kamu pilih ada di satu tempat.

Kesalahan umum

  • Lupa # pada warna hex. color: 2563eb tidak valid dan diabaikan.
  • Memakai opacity untuk membuat background transparan. Teksnya ikut memudar. Pakai warna dengan alpha.
  • Mencampur pemisah di sintaks modern. rgb(37 99, 235) tidak valid: pakai spasi semua atau koma semua.
  • Menganggap nama warna sama dengan desainmu. royalblue bukan #2563eb. Salin kode yang persis.
  • Menilai kontras dengan mata. Periksa warna teks terhadap background-nya dengan contrast checker; 4.5:1 adalah batas minimum untuk teks isi.

Pertanyaan yang sering diajukan

Format warna apa saja yang didukung CSS?

Nama warna (red), hex (#ff0000), rgb(), hsl(), hwb(), lab(), lch(), oklab(), oklch(), dan color(), ditambah kata kunci transparent dan currentColor. Hex, rgb, dan hsl sudah mencakup hampir semua kebutuhan sehari-hari.

Apa perbedaan rgb dan rgba?

Sekarang sudah tidak ada. rgba() adalah alias lama: CSS saat ini membolehkan rgb() menerima nilai alpha (rgb(37 99 235 / 50%)), dan kedua fungsi menerima argumen yang sama di semua browser saat ini.

Bagaimana cara membuat warna transparan di CSS?

Tambahkan alpha channel: rgb(0 0 0 / 50%), hsl(221 83% 53% / 0.5), atau hex 8 digit seperti #2563eb80. Berbeda dengan opacity, cara ini hanya memudarkan satu warna itu, bukan seluruh elemen.

Apa itu HSL di CSS?

Hue, saturation, lightness. Hue adalah sudut pada roda warna (0 merah, 120 hijau, 240 biru), saturation menunjukkan seberapa pekat warnanya, dan lightness dari 0% hitam sampai 100% putih. Format ini memudahkan membuat versi yang lebih terang dan lebih gelap: cukup ubah angka terakhir.

Apa arti currentColor?

currentColor adalah nilai dari properti color milik elemen. Memakainya untuk border atau fill SVG membuat keduanya otomatis mengikuti warna teks.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai