Guide
CSS renk formatları: hex, RGB, HSL, OKLCH — ne zaman hangisi kullanılır
Dört format, dört kullanım durumu. Doğru seçim, renkle ne yapmaya çalıştığınıza bağlıdır.
By Buğra SözeriPublished Updated
Modern CSS dört birincil renk gösterimini destekliyor: hex (#FF6600), rgb(), hsl() ve daha yeni oklch(). Hepsi aynı renk gamını tanımlıyor (varsayılan olarak sRGB, OKLCH için daha geniş). İnsan okunabilirliği, düzenleme kolaylığı ve hangi tür renk değişikliğinin doğal hissettirdiği konusunda farklılaşıyorlar.
Dört format bir bakışta
| Format | Örnek | En iyi kullanım |
|---|---|---|
| Hex | #FF6600 | Renkleri depolama, tasarımcılarla alışveriş, değeri değiştirmeyen kod. |
| rgb() | rgb(255 102 0) | Programatik oluşturma, kanal bazında değerler önem taşıdığında. |
| hsl() | hsl(24 100% 50%) | Tonu sabit tutarken parlaklık ve doygunluğu manuel ayarlama. |
| oklch() | oklch(0.72 0.18 47) | Algısal tekdüzeliğin önem taşıdığı renk skalası tasarımı. |
Hex: depolama formatı
Hex her RGB kanalını iki basamaklı onaltılık değer olarak kodluyor. #FF6600 kırmızı 255, yeşil 102, mavi 0 demektir — canlı bir turuncu.
Artıları: kısa, evrensel olarak anlaşılan, kopyala-yapıştır dostu, her CSS bağlamında çalışıyor.
Eksileri: okumak için şeffaf değil (#7E4F2B sıcak mı soğuk mu ton?), önce dönüştürmeden parlaklığı veya doygunluğu kolayca ayarlayamıyorsunuz.
Modern CSS şeffaflık için 8 basamaklı hex destekliyor: #FF6600AA, yukarıdaki turuncu %67 opaklıkta (AA = 170 / 255).
rgb(): açık kanal formatı
Hex ile aynı kanallar, ondalık sayılar, isteğe bağlı alfa. İki sözdizim bir arada var:
- Eski virgüllü form:
rgb(255, 102, 0)veya alfa ilergba(255, 102, 0, 0.67) - Modern boşluklu form:
rgb(255 102 0)veya alfa ilergb(255 102 0 / 0.67)
Programatik oluşturma için en iyi: algoritma çıktısından renk oluşturma, iki rengi harmanlamak, erişilebilirlik kontrastını hesaplamak.
hsl(): insan tarafından ayarlanabilir format
Üç değer: ton (0-360°), doygunluk (%0-100), parlaklık (%0-100). Her birini bağımsız olarak ayarlamak RGB kanallarını ince ayarlamaktan daha doğal hissettiriyor.
- Ton: rengin kendisi. 0 = kırmızı, 60 = sarı, 120 = yeşil, 180 = camgöbeği, 240 = mavi, 300 = macenta.
- Doygunluk: %0 = gri, %100 = saf renk.
- Parlaklık: %0 = siyah, %50 = saf ton, %100 = beyaz.
Uyarı: HSL'nin parlaklığı algılanan parlaklığı tekdüze olarak izlemiyor. %50 parlaklıktaki HSL sarısı %50 parlaklıktaki HSL mavisinden çok daha açık görünüyor. Algısal açıdan tekdüze renk tasarımı için OKLCH daha iyi tercih.
oklch(): algısal format
Üç değer: L (parlaklık, 0-1), C (kroma, sRGB görüntülenebilir için 0-~0.4), H (ton, 0-360°). OKLab algısal renk uzayına dayalı (Björn Ottosson, 2020).
Temel özellik: eşit parlaklık değerleri eşit parlak görünür. oklch(0.6 0.2 0) (kırmızı) ve oklch(0.6 0.2 120) (yeşil) ve oklch(0.6 0.2 240) (mavi) aynı algılanan parlaklıktadır; HSL'de bunlar dramatik biçimde farklı olurdu.
2023'ten itibaren tüm her zaman yeşil tarayıcılarda destekleniyor.
Doğru olanı seçme
- Marka renkleri ve tasarım token'ları için: HSL veya OKLCH'de tanımlayın; bunlar tasarımcıların anlamlı biçimde ayarlayabileceği şeylerdir. Eski dosyalarda hex'i geri dönüş olarak saklayın.
- UI renk rampları (50/100/200/.../900) için: Sabit kroma ve değişen parlaklıkla OKLCH, algısal açıdan eşit skalalar üretir.
- Figma/Photoshop spec'inden kopyalamak için: hex yapıştırın. Düzenlemeniz gerektiğinde renk dönüştürücümüz aracılığıyla dönüştürün.
- Erişilebilirlik odaklı seçimler için: rgb formunda WCAG kontrastını hesaplayın.
CSS özel özellik deseni
Modern tema mimarileri renkleri HSL/OKLCH özel özellikleri olarak depoluyorki türetilebilsinler:
:root {
--birincil-ton: 24;
--birincil: oklch(0.72 0.18 var(--birincil-ton));
--birincil-hover: oklch(0.65 0.18 var(--birincil-ton));
--birincil-arka: oklch(0.92 0.05 var(--birincil-ton));
}Tonu bir kez değiştirmek tüm paleti tutarlı biçimde döndürür. Hex ile aynı desen önişlemci işlevleri olmadan imkânsızdır.
Tarayıcı desteği ve geri dönüş stratejisi
| Gösterim | Chrome | Safari | Firefox | Outlook masaüstü |
|---|---|---|---|---|
| Hex 6 basamak | hepsi | hepsi | hepsi | hepsi |
| Hex 8 basamak (alfa) | 62+ (2018) | 10+ (2016) | 49+ (2016) | HAYIR |
| rgb() eski virgüllü | hepsi | hepsi | hepsi | hepsi |
| rgb() boşluklu sözdizim | 65+ (2018) | 15+ (2021) | 113+ (2023) | HAYIR |
| hsl() | tüm modern | tüm modern | tüm modern | kısmi |
| oklch() | 111+ (2023) | 15.4+ (2022) | 113+ (2023) | HAYIR |
Yaygın hatalar
- Şeffaflığı iki farklı yolla tutarsız belirtmek.
rgba(255 102 0 / 0.67)ve#FF6600ABaynı renktir, ancak her ikisinin de tek bir stil sayfasında bulunması arama-değiştirme ve temayı kırılgan yapar. - Aşırı kromada OKLCH'ye güvenmek.
oklch(0.6 0.4 47), sRGB ekran gamutu'nun gerçekte oluşturamadığı bir kroman talep ediyor; tarayıcı en yakın oluşturulabilir değere kırpar. - HSL veya OKLCH değerlerinde WCAG kontrastını hesaplamak. WCAG 2.1 kontrast formülü doğrusal ışıklı sRGB üzerinde çalışıyor. HSL veya OKLCH girişleri alan araçlar dahili olarak önce sRGB'ye dönüştürüyor.
- Hex'i bileşenler içine sabit kodlamak. Bir bileşen içindeki
color: #FF6600rengi bir değere kilitler; tema değiştirme arama-değiştirme egzersizine dönüşür. Her zaman kökünde tanımlanan özel özelliklere başvurun.
Etkileşimli format dönüşümü için renk dönüştürücü WCAG kontrast raporlamasıyla hex ↔ rgb ↔ hsl ↔ oklch dönüşümünü yapıyor.
Frequently asked questions
- CSS'de hex ve HSL renk formatları arasındaki fark nedir?
- Hex, kırmızı, yeşil ve mavi için üç 2 basamaklı onaltılık değer olarak rengi kodlar (örneğin #FF6600). HSL aynı rengi ton (0-360°), doygunluk (%0-100) ve parlaklık (%0-100) olarak ifade eder; bu, üç kanalın tamamını yeniden hesaplamadan parlaklığı ayarlamayı kolaylaştırır.
- CSS'de hsl yerine ne zaman oklch kullanmalıyım?
- Algısal açıdan tekdüze renk geçişlerine veya palet oluşturmaya ihtiyaç duyduğunuzda oklch kullanın. HSL'de tonu sabit tutarken parlaklığı değiştirmek, çok farklı parlak görünen renkler üretir; oklch'nin parlaklık kanalı insan algısına göre kalibre edilmiştir, dolayısıyla L=%60 tüm tonlarda eşit ölçüde parlak görünür.
- CSS'de şeffaflık için 8 basamaklı hex kodları kullanabilir miyim?
- Evet. CSS, son iki basamağın 00 (şeffaf) ile FF (opak) arasında alfa belirttiği 8 basamaklı hex'i (#RRGGBBAA) destekler. Örneğin, #FF660080 %50 şeffaf bir turuncudur.
- Tüm tarayıcılar oklch renk değerlerini destekliyor mu?
- oklch, 2023'ten bu yana tüm büyük tarayıcılarda destekleniyor (Chrome 111, Firefox 113, Safari 15.4). Daha eski tarayıcı desteği için oklch bildiriminden önce hex veya rgb geri dönüşü sağlayın.
- Renk paleti oluşturma için hsl'nin rgb'ye göre avantajı nedir?
- HSL, tonu ve doygunluğu sabit tutarken yalnızca parlaklık değerini ayarlayarak ton ve nüans oluşturmanıza olanak tanır ve uyumlu paletler üretir. RGB ile #FF6600'ün daha açık bir versiyonunu oluşturmak üç kanalın tamamını manuel olarak yeniden hesaplamayı gerektirir.
- Hex rengi hsl'ye nasıl dönüştürürüm?
- Her RGB kanalını 0-1'e normalleştirin, maksimum ve minimumu bulun, ardından hesaplayın: H = hangi kanalın maksimum olduğuna dayalı renk açısı, S = (max−min)/(1−|2L−1|), L = (max+min)/2. Çoğu tasarım aracı ve CSS önişlemcisi yerleşik dönüştürme işlevleri içeriyor.
Sources & references
Authoritative references cited by this piece. Verified by Buğra Sözeri on the dates shown and re-checked at every deploy.
- W3C CSS Color Module Level 4 — Her CSS renk sözdizimi için yetkili spec (hex, rgb, hsl, hwb, lab, lch, oklab, oklch, color())(as of )
- W3C CSS Color Module Level 5 — color-mix() ve göreli renk — Makalede tartışılan modern renk karıştırma işlevleri için referans(as of )
- IEC 61966-2-1 — sRGB renk uzayı spesifikasyonu — Makalenin başvurduğu her hex / rgb değerinin altındaki sRGB birincilleri ve gama eğrisini tanımlıyor(as of )
Related
Published May 16, 2026 · Last reviewed May 31, 2026