Перейти к основному содержимому

Правило CSS @supports

Используйте правило @supports, чтобы спросить браузер, поддерживает ли он конкретное свойство или значение CSS. С его помощью можно также определить резервные стили для неподдерживаемой функции.

В результате стили применяются только тогда, когда браузер может их обработать.

Базовый синтаксис

styles.css
@supports (property: value) {
  /* CSS rules to apply if condition is true */
}

Пример: использование @supports с grid и flex

Резервное оформление получается при сочетании @supports с обычным CSS.

Резервный вариант Flex

Браузер, поддерживающий display: flex, применяет CSS внутри правила @supports. Любой другой браузер вместо этого использует класс .container, записанный вне правила.

Prompt
Создайте страницу, которая использует @supports для проверки поддержки браузером display: flex. Если поддерживается, стилизуйте .container с display: flex. Вне правила @supports предоставьте резервный вариант, используя float: left и width: 100% для .container. Добавьте несколько дочерних элементов внутри контейнера, чтобы продемонстрировать раскладку.
Результат: полная HTML-страница

Резервный вариант Grid

Здесь проверяется display: grid. Если проверка пройдена, применяется CSS внутри правила @supports, а если нет, резервным вариантом служит класс .container вне этого правила.

Prompt
Создайте страницу, которая использует @supports для проверки поддержки браузером display: grid. Если поддерживается, стилизуйте .container с display: grid, grid: auto, grid-gap: 10px, background-color: #2196F3 и padding: 10px. Вне правила @supports предоставьте резервный вариант с display: table, width: 90%, тем же цветом фона и отступом. Добавьте несколько дочерних элементов, чтобы показать раскладку.
Результат: полная HTML-страница

Отрицание с помощью not

Чтобы применять стили только тогда, когда функция не поддерживается, напишите not в условии.

Пример

styles.css
@supports not (display: grid) {
  .warning {
    background-color: pink;
    padding: 10px;
    border: 1px solid red;
  }
}

Комбинирование условий

Одно правило @supports может содержать несколько условий, объединённых с помощью and, or и not.

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

Пример

styles.css
@supports (display: grid) and (gap: 10px) {
  .container {
    display: grid;
    gap: 10px;
  }
}

Справочник CSS

Поддерживает ли браузер функцию CSS, проверяется с помощью правила @supports.