CSS-справочникВ стандарте

CSS @supports — как работает

CSS @supports: принцип работы, корректный синтаксис, практический сценарий, ограничения, ошибки и актуальная совместимость.

Когда применять

В материале о «@supports» основное внимание уделено области «CSS @-правила». Правило @supports управляет частью таблицы стилей на уровне, отличном от обычной декларации. Проверяйте поведение «@supports» на панели управления с асинхронным обновлением данных, причём используйте нативное действие вместо имитации клика.

Практическое правило для @supports

Для «@supports» сначала соблюдайте допустимое место @-правила и порядок относительно других правил. После этого сравните исходное и изменённое состояние «@supports» на одном и том же содержимом.

Синтаксис @supports

Минимальная запись «@supports» нужна для отделения самой возможности от стилей и разметки проекта. Проверьте фрагмент отдельно перед переносом.

css
@supports (display: grid) {
  .layout { display: grid; }
}
Открыть в Playground

Как работает @supports

Интерпретируется на уровне таблицы стилей, а не как обычное свойство элемента. Для «@supports» проверьте две контрольные точки — отображение в режиме печати и результат при системной тёмной теме: так видно, на каком этапе появляется итоговое поведение этой темы.

Проверка в проекте

  • Соблюдайте допустимое место @-правила и порядок относительно других правил; результат относится непосредственно к «@supports».
  • Замедлить загрузку ресурсов и проверить резервное содержимое при разборе «@supports».
  • Проверьте «@supports» на панели управления с асинхронным обновлением данных через отображение в режиме печати и запишите наблюдаемое изменение.
Выбор конструкции

Оставляйте «@supports» в решении только после проверки на панели управления с асинхронным обновлением данных. Если нативная конструкция решает задачу «@supports» с меньшим числом условий, используйте её.

Практика с @supports

Перенесите «@supports» в минимальном компоненте и испытайте его на панели управления с асинхронным обновлением данных. Сначала воспроизведите правильный результат, затем намеренно добавьте риск для «@supports»: неверное положение или синтаксис @supports может сделать весь блок недействительным.

CSS @-правила@supports

Сценарий: на панели управления с асинхронным обновлением данных.

Ошибки при работе с @supports

01

Устойчивость

Неверное положение или синтаксис @supports может сделать весь блок недействительным — это предметный риск для «@supports».

02

Доступность

Оптимизация кода до проверки корректности и доступности при использовании «@supports».

03

Каскад

Отсутствие запасного поведения при неподдерживаемой возможности; для «@supports» проверьте это отдельно.

Поддержка @supports

Для «@supports» таблица собрана из закреплённой версии MDN Browser Compatibility Data. Указанная версия браузера показывает первое заявленное появление базовой поддержки «@supports»; окончательное решение принимайте по аудитории конкретного проекта.

Chromeс версии 28Edgeс версии 12Firefoxс версии 22Safariс версии 9

Спецификация: источник 1, источник 2, источник 3.

Вопросы о @supports

Как понять, что «@supports» выбрано правильно?

«@supports» выбрано правильно, когда оно решает задачу «управлять условием, ресурсом или областью применения блока CSS», сохраняет результат на панели управления с асинхронным обновлением данных и проходит предметную проверку: соблюдайте допустимое место @-правила и порядок относительно других правил.

Нужен ли запасной вариант для «@supports»?

Запасной вариант для «@supports» нужен, если целевой браузер или режим не обеспечивает выбранное поведение. Без улучшения «@supports» должно сохранять смысл, содержимое и основное действие.

Спецификации и источники

Синтаксис и статус проверяются по HTML Living Standard, спецификациям CSS и MDN Browser Compatibility Data. Примеры и объяснения подготовлены для этого сервиса.