Новые медиазапросы: адаптируем страницу к яркому свету и ночному режиму, управляем контрастностью и анимацией с помощью CSS

Медиазапросы — один из самых мощных инструментов CSS. С их помощью можно менять стили в зависимости от типа устройства и условий просмотра. И очень часто появляются новые медиазапросы, которые расширяют возможности разработчика.
В предварительной версии Media Queries Level 5 есть несколько очень интересных инструментов. Некоторые из них ещё дорабатываются, а некоторые уже поддерживаются популярными браузерами. Подробнее о новых медиазапросах читайте в этой статье.
Содержание
- Медиазапрос
light-level
- Медиазапрос
inverted-colors
- Предпочтения, предпочтения, предпочтения
- Ещё один мощный инструмент: кастомные медиазапросы
- Радужные перспективы медиазапросов
Медиазапрос light-level
В начале марта 2020 года браузеры не поддерживают этот запрос. Однако он выглядит очень перспективно. С помощью этого запроса можно менять стили в зависимости от того, где и когда пользователь просматривает страницу. Например, стили могут отличаться при просмотре на улице в ясный день и в тёмной комнате с выключенным светом.
Медиазапрос поддерживает три значения: dim
, normal
(дефолтное значение) и washed
. Вот пример использования:
light-level
в справочнике MDN.
Медиазапрос inverted-colors
До появления ночного режима некоторые пользователи включали в браузере инверсию цветов, чтобы получить подобие dark mode. При таком режиме страница выглядела довольно аккуратно, но изображения и текст всё-таки искажались. Белое на чёрном обычно выглядит более контрастным, чем чёрное на белом.
Инвертированный цвет
Медиазапрос inverted-colors
решает эти проблемы. Этот запрос на момент выхода статьи поддерживает только Safari.
inverted-colors
поддерживает значения inverted
и none
. В примере ниже показан гибкий подход к использованию этого запроса.
inverted-colors
в справочнике MDN.
Предпочтения, предпочтения, предпочтения
Пятый уровень медиазапросов сфокусирован на персонализации контента. Теперь у разработчиков есть пять типов медиазапросов, с помощью которых легко адаптировать сайт к нуждам пользователей.
Медиазапрос prefers-colors-scheme
Вы могли уже слышать об этом запросе. Он позволяет менять стили, если пользователь включил ночной режим. То есть dark mode теперь можно добавить в приложение с помощью нескольких строк кода.
Браузеры поддерживают эту функцию. Запрос prefers-color-scheme
принимает три значения: light
, dark
и no-preference
.
prefers-color-scheme
в справочнике MDN.
Медиазапрос prefers-contrast
Этот запрос фокусируется на вопросах доступности. Он позволяет удовлетворять потребности пользователей, которые нуждаются в высоком контрасте при использовании сайта.
prefers-contrast
принимает два значения: no-preference
и high
. Идёт дискуссия о разделение значения high
на increased
и extremely-high
. Браузеры пока не поддерживают этот медиазапрос. Пример использования:
prefers-contrast
в справочнике MDN.
Медиазапрос prefers-reduced-motion
Некоторые пользователи не любят анимации и переходы. Есть люди, которых движение на экране буквально бесит. Поэтому современные девайсы позволяют управлять анимациями и переходами.
Запрос prefers-reduced-motion
решает проблему. Обратите внимание, вы можете не убирать движение полностью, а только приглушать его. Это можно сделать с помощью значения reduce
.
Медиазапрос prefers-reduced-transparency
Некоторые операционные системы дают возможность отключить полупрозрачные наслоения при работе с интерфейсами. Браузеры пока не поддерживают запрос prefers-reduced-transparency
. Но это перспективный и удобный инструмент.
Медиазапрос принимает два значения: no-preference
и reduce
. Пример кода:
prefers-reduced-transparency
в справочнике MDN.
Медиазапрос prefers-reduced-data
Очень удобный инструмент. Если вы находитесь за рубежом и интернет в роуминге стоит дорого, если скорость интернета низкая, работать с сайтами с большим количеством «тяжёлого» контента становится неудобно. Запрос prefers-reduced-data
решает проблему.
Браузеры пока не поддерживают этот медиазапрос. Но это один из самых перспективных и полезных инструментов среди перечисленных в статье. С его помощью можно пропустить «тяжёлый» хедер или изображения в высоком разрешении.
Запрос принимает значения no-preference
и reduce
. Пример кода ниже.
Спецификация prefers-reduced-data
.
Ещё один мощный инструмент: кастомные медиазапросы
Один из самых интересных инструментов из Media Queries Level 5 — настраиваемые медиазапросы. С их помощью можно избежать повторений.
Кастомные запросы определяются с помощью ключевого слова @custom-media
. Код выглядит так.
Рабочая группа CSS планирует сделать эти запросы пригодными для скриптов. Благодаря этому инструмент станет ещё мощнее. Представьте, какие возможности появятся, когда вы сможете менять стили с помощью запросов @media (–logged-in)
и @media(–no-connection)
.
Пока браузеры не поддерживают эти запросы. Но вы можете использовать плагин PostCSS, чтобы получить доступ к @custom-media
.
Радужные перспективы медиазапросов
Медиазапросы уже стали одним из самых мощных инструментов CSS. А Media Queries Level 5 с большой долей вероятности выведет этот инструмент на новый уровень. Учитывайте, что большая часть представленных в этой статье запросов находится на стадии рассмотрения и не поддерживается браузерами. Возможно, вам придётся переписывать код, так как спецификации могут поменяться.
Здесь есть и положительный момент: вы можете внедрить новые медиазапросы и улучшить пользовательский опыт людей, которые установили последние версии браузеров. А для пользователей со старыми браузерами ничего не сломается.
Разработчик Хекслета Андрей Мошков прокомментировал информацию о новых медиазапросах:
Уже сейчас мы можем использовать
prefers-color-scheme
для определения предпочтений пользователя. При этом для браузеров, не поддерживающих этот медиазапрос, CSS-код будет невалидным, и парсер его просто пропустит (например, Chrome 75 версии или Edge 18). Пользователям более свежих браузеров («зеленых») это дает более удобный и привычный способ работы с сайтом. Такой подход называется прогрессивное улучшение (progressive enhancement).
Адаптированный перевод статьи New media queries you need to know by Kristofer Selbekk. Мнение автора оригинальной публикации может не совпадать с мнением администрации Хекслета.
Дмитрий Дементий
5 лет назад