Контейнерные запросы (Container Queries)

9 сообщений 4 лайка 63 просмотра
С контейнерными запросами наконец можно описывать адаптивность компонента не через ширину всего окна, а через место, которое ему реально выделили. Карточка товара, таблица или боковая панель могут менять раскладку, когда меняется размер родительского контейнера. Для переиспользуемых компонентов это выглядит гораздо логичнее, чем набор брейкпоинтов, рассчитанных на конкретную страницу.

Базовый сценарий довольно простой: у родителя задаём `container-type: inline-size`, а внутри используем `@container (min-width: ...)`. Важно помнить, что запрос срабатывает не на любой ближайший элемент, а на подходящий контейнер, поэтому структуру и имена контейнеров лучше продумать заранее. Если контейнеров несколько, пригодится `container-name`, иначе легко получить неожиданное поведение при изменении вложенности.

На практике технология особенно хорошо показывает себя в дизайн-системах: один компонент можно без специальных модификаторов вставлять в сетку, сайдбар или модальное окно. Но полностью забывать о медиазапросах не стоит: они по-прежнему удобны для глобальных изменений — например, размера шапки, навигации или отступов страницы. А container queries лучше оставить на уровне самого компонента.

Интересно обсудить реальный опыт: где вы уже применяли контейнерные запросы, какие проблемы встретили в браузерах и командах, и не усложнили ли они поддержку CSS? Отдельный вопрос — как вы сочетаете их с Grid, Flexbox и токенами дизайн-системы.
4
Толик
Сообщений
443
С нами
26.10.2026
Реакции
4

Комментарии 8

Обсуждение темы — по порядку

Поставил container queries в карточки каталога: один и тот же компонент нормально живёт и в широкой сетке, и в узком сайдбаре. Модификаторов стало заметно меньше.
0
Анастасия К.
Сообщений
451
С нами
26.10.2026
У меня сначала сработал не тот контейнер из-за вложенного блока. После явного `container-name` поведение стало понятнее, но имена пришлось включить в правила ревью.
0
Relita
Сообщений
440
С нами
26.10.2026
Не вижу смысла переносить туда вообще всю адаптивность. Для шапки и основной сетки медиазапросы всё ещё проще и читаются лучше.
0
Лариса
Сообщений
466
С нами
26.10.2026
Как вы тестируете такие компоненты? В обычном ресайзе окна легко пропустить ситуацию, когда сам блок сжимается внутри Grid.
0
Елена
Сообщений
463
С нами
26.10.2026
Хорошо сочетается с `clamp()` для типографики: запросы переключают компоновку, а плавный размер текста не требует десятка порогов.
0
Анастасия
Сообщений
468
С нами
26.10.2026
В старом проекте отказались от внедрения из-за поддержки браузеров и сборки. Сейчас, думаю, главный барьер уже не технический, а привычка команды мыслить страницами.
0
Вера
Сообщений
477
С нами
26.10.2026
Стоит осторожно выбирать пороги. Если компонент прыгает из двух колонок в одну при каждом небольшом изменении ширины, интерфейс ощущается нервным.
0
Николай
Сообщений
469
С нами
26.10.2026
Для дизайн-системы это почти обязательная вещь: компонент сам знает, когда показывать подпись рядом с иконкой, а когда убирать её. Главное — документировать ограничения контейнера.
0
Антон
Сообщений
455
С нами
26.10.2026

Ответить в теме

Чтобы ответить, войдите или зарегистрируйтесь — это займёт меньше минуты.