🧱 Суть
Container Queries – это CSS-механизм, который позволяет применять стили на основе размера родительского контейнера, а не всего окна браузера.
Обычные медиазапросы:
@media (max-width: 768px)ориентируются на:
размер viewport (экрана)Container Queries ориентируются на:
размер конкретного элемента📦 Проблема
1. Media Queries не всегда подходят
Обычный подход:
@media (max-width: 768px) {
.button {
...
}
}Проблема:
- компонент может находиться в маленьком блоке на большом экране
- размер экрана не показывает реальное доступное место компонента
Например:
Большой экран
↓
маленькая карточка
↓
кнопке всё равно мало места2. Компоненты становятся менее переиспользуемыми
Компонент не должен знать размер всего приложения.
Ему важно понимать: сколько места есть у него самого
✅ Решение
Использовать:
container queriesОни позволяют адаптировать компонент относительно его родителя.
💻 Код
Сначала объявляем контейнер:
.responsive-button {
container-type: inline-size;
}Теперь элемент можно использовать как основу для запросов.
Создаём запрос:
@container (max-width: 200px) {
.text {
display: none;
}
}Если ширина контейнера меньше 200px:
ADD TO CART
↓
скрываетсяПример
HTML:
<button class="responsive-button">
<img src="cart.png" alt="...">
<span class="text">ADD TO CART</span>
</button>CSS:
.responsive-button {
container-type: inline-size;
}
@container (max-width: 200px) {
.text {
display: none;
}
}Разница
Media Query:
@media (max-width: 768px)Проверяет:
размер окна браузераContainer Query:
@container (max-width: 200px)Проверяет:
размер родительского контейнера🎯 Вывод
- Container Queries позволяют делать адаптивные компоненты
- работают относительно родителя, а не экрана
- делают компоненты более независимыми и переиспользуемыми
- особенно полезны для UI-библиотек и сложных интерфейсов
- заменяют часть случаев использования
media queries