Как создать темный режим с помощью медиа-запроса Preference-Color-Scheme?

Опубликовано: 26 Августа, 2022

В этой статье мы создаем интерфейс в темном режиме, используя медиа-запрос Prefer-Color- Scheme.

Предпочитаемая цветовая схема — это новый медиа-запрос, который используется для определения текущей темы вашей системы и предоставления функции, помогающей создать тему веб-страницы в соответствии с предпочтениями вашей системы. Если ваш телефон (или любое другое устройство) в настоящее время находится в темном режиме, этот медиа-запрос обнаружит его, и вы сможете использовать пользовательский CSS по вашему выбору.

Синтаксис:

@media (prefer-color-scheme : your_color_scheme)
{
     ...
}

Вместо your_color_scheme вы можете использовать темный или светлый цвет. вариант. Темный цвет указывает на то, что пользователь уведомил систему о том, что он предпочитает интерфейс с темной темой, а светлый означает, что пользователь уведомил систему о том, что он предпочитает интерфейс со светлой темой, или не выразил активное предпочтение.

@media (prefer-color-scheme : dark) { ... } 

@media (prefer-color-scheme : light) { ... } 

Пример: мы создали фиктивную веб-страницу с использованием HTML и CSS и хотим создать ее в темном режиме.

Выход:

Создание пользовательского интерфейса в темном режиме. Теперь создайте медиа-запрос Preferences-Color- Scheme и установите для него значение dark . Мы делаем все черные тексты белыми, а все белые фоны — черными, если система использует темный режим.

Выход:

Определение текущего режима системы с помощью JavaScript: Иногда нам нужно определить текущий режим темы. Например, если мы хотим использовать два отдельных изображения для светлого и темного режима, вам нужно определить текущий режим темы. Для определения режима мы используем метод matchMedia(). Этот метод принимает строку (медиа-запрос, который вы хотите найти) и возвращает результат этого медиа-запроса.

Пример: в следующем фрагменте кода мы ищем результат медиа-запроса Preferences-Color- Scheme.

Javascript




<script>
  const a = window.matchMedia("(prefers-color-scheme: dark)");
  console.log(a.matches);
</script>

Выход:

  • Если системная тема темная, возвращается:
true
  • Если системная тема светлая, возвращается:
false