Новая CSS функция light-dark() для переключения цвета темы

Источник: «The new light-dark() function to switch theme color in CSS»
В Интернете существует множество способов переключения между светлыми и тёмными темами. Мы можем использовать JavaScript или медиазапрос prefers-color-scheme в CSS для переключения между темами на основе системных предпочтений пользователя.

Медиазапрос 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() можно прочитать на странице спецификации.

Дополнительные материалы

Предыдущая Статья

Новое в Symfony 6.4: CHIPS Cookie

Следующая Статья

Новое в Symfony 6.4: Обработчик подпроцессов