Sistem renkleri, kullanılan mevcut color-scheme
değerine tepki verebilir. light-dark()
işlevi, yazarlara aynı özelliği sunar.
CSS'de sistem renkleri
CSS'de birçok renk alanından birçok renk kullanabilirsiniz. Örneğin, adlandırılmış renkleri, onaltılık renkleri, belirli bir renk alanına bağlı renk işlevlerini ve daha genel color()
işlevini kullanabilirsiniz.
Örneğin, cornflowerblue
adlı renk #6495ED
, hsl(218.54deg 79.19% 66.08%)
veya color(display-p3 0.43 0.58 0.9)
olarak da gösterilebilir.
CSS, bu çeşitli ad ve biçimlere ek olarak CSS Renk Modülü 4. Seviye'de belirtilen sistem renkleri olarak tanımlanan renkleri de içerir. Bu sistem renkleri, tarayıcı tarafından tanımlanan ve bir anahtar kelimeyle temsil edilen renklerdir.
Örneğin, Canvas
sistem rengi (<canvas>
öğesiyle karıştırılmamalıdır) "uygulama içeriğinin veya dokümanların arka planını" temsil eder. "Uygulama içeriğindeki veya dokümanlardaki metin"i temsil eden CanvasText
ile güzel bir şekilde eşleşir ve ayrıca bu özellikle birlikte kullanılması gerekir.
CSS'de bunları aşağıdaki gibi kullanırsınız:
body {
color: CanvasText;
background-color: Canvas;
}
Varsayılan olarak CanvasText
, black
'a yakın bir renk oluşturur ve Canvas
, white
'a yakın bir renktir. Gerçek uygulama tarayıcıya bağlıdır. Örneğin, Chrome'da CanvasText
#121212
olarak görünürken Safari'de biraz daha açık #1e1e1e
olarak görünür.
Bu sistem renklerinin gizli bir özelliği, color-scheme
özelliğinin hesaplanan değerine yanıt verebilmeleridir. Örneğin, kullanılan color-scheme
değeri dark
olduğunda CanvasText
ve Canvas
değerlerinin yerleri değişir.
:root {
color-scheme: dark;
}
body {
color: CanvasText;
background-color: Canvas;
}
Aşağıdaki demoda, :root
üzerinde ayarlanan color-scheme
değerini değiştirebilir ve sayfanın nasıl yanıt verdiğini görebilirsiniz.
light dark
olarak ayarlandığında, öğenin hem açık hem de koyu modu desteklediğini belirtir. Kullanılan değerin seçimi,prefers-color-scheme
medya durumunun değerine bağlıdır.light
olarak ayarlandığında, öğenin açık renk şemasını desteklediğini belirtir.dark
olarak ayarlandığında, öğenin koyu renk şemasını desteklediğini gösterir.
light-dark()
ile tanışın
Kullanılan color-scheme
değerine tepki verme özelliği şimdiye kadar sistem renkleri için ayrılmıştı. CSS Renk Modülü 5. Seviye'de belirtilen light-dark()
sayesinde artık aynı özelliğe sahipsiniz.
light-dark()
, iki bağımsız değişkeni kabul eden bir işlevdir. Bu bağımsız değişkenlerin her ikisi de <color>
olmalıdır. Kullanılan renk şemasına bağlı olarak bunlardan biri seçilir.
- Kullanılan renk şeması
light
ise veya bilinmiyorsa ilk değerin hesaplanan değeri döndürülür. - Kullanılan renk şeması
dark
ise ikinci rengin hesaplanmış değeri döndürülür.
light-dark()
işlevinin sonucu bir <color>
olur. CSS'de <color>
kabul edilen her yerde kullanılabilir. Örneğin, color
ve background-color
özelliklerinde, ancak linear-gradient()
gibi bir işlevde de kullanılabilir.
Aşağıdaki örnekte, koyu modda #333
veya açık modda (veya bilinmeyen modda) #ccc
arka plan rengi kullanılmış.
:root {
color-scheme: light dark;
}
body {
background-color: light-dark(#ccc, #333);
}
light-dark()
işlevinin düzgün çalışması için bir color-scheme
belirtmeniz gerekir. Bu özellik devralındığı için genellikle :root
öğesinde ayarlanır ancak dilerseniz belirli bir öğede ayarlayabilirsiniz.
Pratik uygulama
Aşağıdaki örnekte, birkaç özel özellik sayfadaki renkleri temsil etmektedir. Koyu moda uygun hale getirmek için prefers-color-scheme
medya koşulunda farklı bir değer, bu özel özelliklerin değerlerinin üzerine yazılır.
:root {
--primary-color: #333;
--primary-background: #e4e4e4;
--highlight-color: hotpink;
}
@media (prefers-color-scheme: dark) {
:root {
--primary-color: #fafafa;
--primary-background: #121212;
--highlight-color: lime;
}
}
light-dark()
sayesinde bu kod basitleştirilebilir. color-scheme
, :root
üzerinde light dark
olarak ayarlandığından, işletim sisteminizi açık moddan koyu moda (veya tam tersi) değiştirirken bu renklerin değerleri otomatik olarak değişir.
:root {
color-scheme: light dark;
--primary-color: light-dark(#333, #fafafa);
--primary-background: light-dark(#e4e4e4, #121212);
--highlight-color: light-dark(hotpink, lime);
}
Ayrıca, color-scheme
öğesini dark
veya light
değerine ayarlayarak DOM'nin belirli bir alt ağacını yalnızca açık veya koyu modu kullanmaya zorlayabilirsiniz. Aşağıdaki örnekte bu, :root
için uygulanmaktadır.