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

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

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

Практический смысл

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

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

Проверяя «@container», соблюдайте правило: соблюдайте допустимое место @-правила и порядок относительно других правил. Для «@container» изменяйте одно условие за запуск и фиксируйте фактический результат.

Синтаксис @container

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

css
@container (min-width: 32rem) {
  .card { display: grid; }
}
Открыть в Playground

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

Браузер обрабатывает «@container» в контексте области «CSS @-правила»: интерпретируется на уровне таблицы стилей, а не как обычное свойство элемента. Для «@container» наблюдения через момент загрузки ресурса в Network и размер содержащего блока в Layout отделяют исходное условие от результата.

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

  • Соблюдайте допустимое место @-правила и порядок относительно других правил; результат относится непосредственно к «@container».
  • Увеличить текст до 200% и убедиться, что действия и подписи не обрезаются при разборе «@container».
  • Проверьте «@container» в компоненте внутри узкого контейнера, а не viewport через момент загрузки ресурса в Network и запишите наблюдаемое изменение.
Выбор конструкции

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

Практика с @container

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

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

Сценарий: в компоненте внутри узкого контейнера, а не viewport.

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

01

Доступность

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

02

Каскад

Использование !important вместо разбора каскада при использовании «@container».

03

Поддержка

Подмена семантики визуально похожим div или span; для «@container» проверьте это отдельно.

Поддержка @container

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

Chromeс версии 105Edgeс версии 105Firefoxс версии 110Safariс версии 16

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

Вопросы о @container

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

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

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

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

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

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