Новая CSS функция light-dark() для переключения цвета темы
Медиазапрос prefers-color-scheme
позволяет выполнять действия, применяемые только при включении светлого или тёмного режима в системе пользователя. Например, можно изменить цвет фона страницы на чёрный, если в системе пользователя включён тёмный режим, следующим образом.
body {
background-color: white;
}
@media (prefers-color-scheme: dark) {
body {
background-color: black;
}
}
Аналогичным образом можно изменить цвет текста в зависимости от системных предпочтений пользователя.
Новая CSS функция light-dark()
Теперь, чтобы сделать все это более удобным, в CSS появилась новая функция light-dark()
, позволяющая указать два значения для свойства. Первое значение будет применяться, когда пользователь включит светлый режим в своей системе, а второе — когда пользователь включит тёмный режим в своей системе.
Вот как его можно использовать.
body {
background-color: light-dark(#FFF, #000);
color: light-dark(#333, #ccc);
}
Как видите, больше не нужно использовать медиазапрос prefers-color-scheme
. Об этом позаботится функция light-dark()
. Кроме того, она является более гибкой, поскольку можно задавать различные значения для разных свойств.
Помимо предпочитаемой пользователем темы, функция light-dark()
может быть использована для переключения между двумя значениями, основанными на свойстве color-scheme
.
Примечание. CSS-свойство color-scheme
позволяет элементу указать, в каких цветовых схемах ему удобно отображаться.
Это означает, что для работы функции light-dark()
необходимо также включить объявление color-scheme
.
:root {
color-scheme: light dark;
}
:root {
--text-color: light-dark(#333, #ccc);
/* В режиме Light Mode = возвращается 1-е значение.
В Dark Mode = возвращается 2-е значение. */
}
Свойство color-scheme
можно также использовать для определённого элемента, чтобы оно применялось только к нему.
p {
color-scheme: dark;
background-color: light-dark(#FFF, #000);
}
Поддержка браузерами
Что касается поддержки браузерами, то в настоящее время функция light-dark()
поддерживается в Firefox 120, но мы надеемся, что в скором времени она будет поддерживаться и в других браузерах.
Подробнее о функции light-dark()
можно прочитать на странице спецификации.