HD CSS rengine taşı

Bu doküman, yüksek tanımlı CSS renk kılavuzunun bir parçasıdır.

Adam Argyle
Adam Argyle

Web projenizin rengini geniş aralıklı görüntüleri destekleyecek şekilde güncellemek için iki temel strateji vardır:

  1. Zararlı renk düşüşü: Yeni renk alanlarını kullanın ve tarayıcı ile işletim sisteminin görüntüleme özelliklerine göre hangi rengin gösterileceğini belirlemesine izin verin.

  2. Progresif geliştirme: Kullanıcının tarayıcısının özelliklerini değerlendirmek için @supports ve @media kullanın ve koşullar karşılanırsa geniş renk gamı sağlayın.

Tarayıcı display-p3 rengini anlamazsa:

color: red;
color: color(display-p3 1 0 0);

Tarayıcı display-p3 rengini anlarsa:

color: red;
color: color(display-p3 1 0 0);

Her birinin avantajları ve dezavantajları vardır. Artılarının ve eksilerinin kısa bir listesini burada bulabilirsiniz:

Kontrollü azalma

  • Artıları
    • En basit rota.
    • Tarayıcı gamı, geniş gamlı bir ekran değilse sRGB'ye eşlenir veya sRGB'ye sabitlenir. Dolayısıyla sorumluluk tarayıcıdadır.
  • Eksileri
    • Tarayıcı, sevmediğiniz bir renge kayabilir veya harita gamı genişleyebilir.
    • Tarayıcı, renk isteğini anlamayabilir ve tamamen başarısız olabilir. Bununla birlikte, rengin iki kez belirtilmesi ve şelalenin anladığı önceki renge dönmesine izin vererek bu durumu hafifletebilirsiniz.

Progresif geliştirme

  • Artıları
    • Yönetilen renk doğruluğu ile daha fazla kontrol.
    • Mevcut renkleri etkilemeyen bir ekleme stratejisi.
  • Eksileri
    • İki ayrı renk söz dizimini yönetmeniz gerekir.
    • İki ayrı renk gamını yönetmeniz gerekir.

Renk gamı ve renk alanı desteğini kontrol etme

Tarayıcı, CSS ile JavaScript'ten gelen geniş yelpaze özellikleri ve renk söz dizimi desteğinin kontrol edilmesine olanak tanır. Kullanıcının verdiği renk gamı tam olarak sunulmuyor, genel bir cevap sağlanıyor ve kullanıcı gizliliğinin korunuyor. Yine de, kullanıcının donanımının (ör. gam) özelliklerine özel olmadığından tam renk alanı desteği de sunulmaktadır.

Renk gamı destek sorguları

Aşağıdaki kod örneklerinde, ziyaret eden kullanıcının ekranlarındaki renk aralığı kontrol edilir.

CSS'den kontrol et

En az spesifik destek sorgusu, dynamic-range medya sorgusudur:

Tarayıcı Desteği

  • 98
  • 98
  • 100
  • 13.1

Kaynak

@media (dynamic-range: high) {
  /* safe to use HD colors */
}

color-gamut medya sorgusundan yaklaşık olarak veya daha fazla destek için sorgu alınabilir:

Tarayıcı Desteği

  • 58
  • 79
  • 110
  • 10

Kaynak

@media (color-gamut: srgb) {
  /* safe to use srgb colors */
}

@media (color-gamut: p3) {
  /* safe to use p3 colors */
}

@media (color-gamut: rec2020) {
  /* safe to use rec2020 colors */
}

Desteğin kontrol edilmesi için ek iki medya sorgusu daha bulunuyor:

  1. @media (color)
  2. @media (color-index)

JavaScript'ten kontrol et

JavaScript'te window.matchMedia() işlevi çağrılabilir ve değerlendirme için bir medya sorgusu iletilebilir.

Tarayıcı Desteği

  • 9
  • 12
  • 6
  • 5.1

Kaynak

const hasHighDynamicRange = window
.matchMedia('(dynamic-range: high)')
.matches;

console.log(hasHighDynamicRange); // true || false

const hasP3Color = window
.matchMedia('(color-gamut: p3)')
.matches;

console.log(hasP3Color); // true || false

Yukarıdaki kalıp, medya sorgularının geri kalanı için kopyalanabilir.

Renk alanı desteği sorguları

Aşağıdaki kod örneklerinde, ziyaret eden kullanıcının tarayıcısı ve çalışmak için kullanılacak renk alanı seçimi incelenmiştir.

CSS'den kontrol et

Bireysel renk alanı desteği, @supports sorgusu üzerinden sorgulanabilir:

Tarayıcı Desteği

  • 28
  • 12
  • 22
  • 9

Kaynak

@supports (background: rgb(0 0 0)) {
  /* rgb color space supported */
}


@supports (background: color(display-p3 0 0 0)) {
  /* display-p3 color space supported */
}


@supports (background: oklch(0 0 0)) {
  /* oklch color space supported */
}

JavaScript'ten kontrol et

JavaScript'te CSS.supports() işlevi çağrılabilir ve tarayıcının bunu anlayıp anlamadığını görmek için bir özellik ve değer çifti iletilebilir.

CSS.supports('background: rgb(0 0 0)')
CSS.supports('background: color(display-p3 0 0 0)')
CSS.supports('background: oklch(0 0 0)')

Donanımı yerleştirme ve ayrıştırma kontrolleri bir araya getirilir

Her tarayıcının bu yeni renk özelliklerini uygulamasını beklerken, hem donanım hem de renk ayrıştırma özelliğini kontrol etmek iyi bir fikirdir. Renkleri kademeli olarak yüksek tanımlı hale getirirken genellikle bunu kullanıyorum:

:root {
  --neon-red: rgb(100% 0 0);
  --neon-blue: rgb(0 0 100%);
}

/* is the display HD? */
@media (dynamic-range: high) {

  /* does this browser understand display-p3? */
  @supports (color: color(display-p3 0 0 0)) {

    /* safe to use display-p3 colors */
    --neon-red: color(display-p3 1 0 0);
    --neon-blue: color(display-p3 0 0 1);
  }
}

Chrome Geliştirici Araçları ile renklerde hata ayıklama

Güncellenen Chrome Geliştirici Araçları, geliştiricilerin HD rengi oluşturmasına, dönüştürmesine ve hatalarını ayıklamasına yardımcı olacak yeni araçlarla donatılmıştır.

Renk seçici güncellendi

Renk seçici artık tüm yeni renk alanlarını destekliyor. Yazarların, kanal değerleriyle tıpkı kendileri gibi etkileşim kurmasına olanak tanır.

display-p3 renk desteğini gösteren Geliştirici Araçları.

Gamut sınırları

Srgb ve display-p3 gamutları arasına bir çizgi çizen gamı sınır çizgisi de eklendi. Seçilen rengin hangi gamda olduğunun net olarak anlaşılmasını sağlar.

Renk seçicide bir gam çizgisi gösteren Geliştirici Araçları.

Bu, yazarların HD renkleri ile HD olmayan renkleri görsel olarak ayırt etmesine yardımcı olur. Bu özellik, hem HD olmayan hem de HD renkler üretebildiğinden color() işlevi ve yeni renk alanlarıyla çalışırken özellikle faydalıdır. Renginizin hangi renk gamında olduğunu kontrol etmek istiyorsanız renk seçiciyi açın ve bakın.

Renkleri dönüştür

Geliştirici Araçları, yıllardır hsl, hwb, rgb ve hex gibi desteklenen biçimler arasında renkleri dönüştürebiliyor. shift + click bu dönüşümü gerçekleştirmek için Stiller bölmesinde kare renk kartelasını üzerine yazın. Yeni renk araçları yalnızca dönüşümler arasında geçiş yapmakla kalmaz, aynı zamanda yazarların istedikleri dönüşümü görüp seçebilecekleri bir iletişim kutusu da oluşturur.

Dönüştürme işlemi sırasında, dönüşümün alana sığacak şekilde kırpılıp kırpılmadığını bilmek önemlidir. Geliştirici Araçları'nda artık, dönüştürülen renk için sizi bu kırpma işlemiyle ilgili uyaran bir uyarı simgesi bulunur.

Rengin yanında bir uyarı simgesi bulunan DevTools gam kırpma işleminin ekran görüntüsü.

Geliştirici Araçları'ndaki CSS hata ayıklama özelliklerini keşfedin.

Sonraki adımlar

Daha fazla titreşim, tutarlı manipülasyonlar ve interpolasyonlar genel olarak kullanıcılarınıza daha renkli bir deneyim sunar.

Rehberden daha fazla renk kaynağı okuyun.