В мире веб-разработки CSS продолжает эволюционировать, предлагая разработчикам новые возможности для стилизации элементов. Одним из таких нововведений является директива @container. В этой статье мы подробно рассмотрим, что такое @container, как она работает, и как ее использовать для создания адаптивных веб-интерфейсов.
Что такое @container?
Директива @container в CSS позволяет применить стили к элементам в зависимости от размеров их родительских контейнеров. Это новшество стало важным инструментом для построения адаптивных интерфейсов, обеспечивая гибкость и точность в стилизации.
Основные понятия
Контейнер: HTML-элемент, внутри которого находятся другие элементы и который используется для определения условий применения стилей.
Правило контейнера: условие, при котором применяются определенные стили в зависимости от размеров контейнера.

- ПОКАЖЕМ, КАК РАЗВЕРНУТЬ МОДЕЛЬ нейросети DEEPSEEK R1 ПРЯМО НА СВОЁМ КОМПЬЮТЕРЕ
- Где и как применять? Потестируем модель после установки на разных задачах
- Как дообучить модель под себя?
Как работает @container?
Использование @container основано на задаче условий, которые должны быть выполнены для применения стилей. Рассмотрим пример базового использования:
@container (min-width: 300px) {
.child-element {
background-color: lightblue;
}
}В этом примере, если ширина контейнера достигает или превышает 300 пикселей, элемент с классом child-element получит светло-голубой цвет фона.
Применение @container в практике
Создание контейнера
Чтобы использовать директиву @container, сначала необходимо определить контейнер. Это делается с помощью свойства container-type.
.container {
container-type: inline-size;
}
Задача условий
После того как контейнер определен, можно применять правила @container для элементов внутри него. Например:
@container (min-width: 500px) {
.content {
font-size: 1.5rem;
}
}Здесь, когда ширина контейнера достигает 500 пикселей, размер шрифта элемента с классом content увеличивается.
Преимущества использования @container
- Гибкость в адаптивном дизайне
Одним из главных преимуществ использования @container является возможность создавать более гибкие и адаптивные дизайны. Вместо того чтобы ориентироваться только на размеры окна браузера, можно учитывать размеры конкретных элементов-контейнеров.
- Улучшение производительности
Применение стилей на основе размеров контейнеров, а не окна браузера, может улучшить производительность сайта, так как стили применяются только в нужных случаях, снижая нагрузку на браузер.
Практические примеры
Пример 1: адаптивная сетка
HTML:
<div class="container"> <div class="grid-item">Item 1</div> <div class="grid-item">Item 2</div> <div class="grid-item">Item 3</div> </div>
CSS:
.container {
container-type: inline-size;
display: grid;
grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
}
@container (min-width: 600px) {
.grid-item {
background-color: lightgreen;
}
}
Пример 2: адаптивные карточки
HTML:
<div class="card-container">
<div class="card">Card 1</div>
<div class="card">Card 2</div>
</div>
CSS:
.card-container {
container-type: inline-size;
}
@container (min-width: 400px) {
.card {
border: 2px solid blue;
}
}
Поддержка браузеров и полифилы
Понимание поддержки различных функций CSS в браузерах важно для разработки кроссбраузерных решений. На момент написания статьи @container поддерживается последними версиями большинства современных браузеров, таких как Chrome, Firefox, и Safari. Тем не менее, есть браузеры, в которых поддержка может отсутствовать или быть частичной.
Полифилы
Если ваш проект требует поддержки старых браузеров, вы можете воспользоваться полифилами. Например, библиотека contain-polyfill предоставляет возможность использовать @container в браузерах, которые не поддерживают эту функцию.
Таблица поддержки браузеров
| Браузер | Поддержка @container | Версия |
| Chrome | Да | 92+ |
| Firefox | Да | 90+ |
| Safari | Да | 15+ |
| Edge | Да | 92+ |
| Internet Explorer | Нет | — |
Интеграция с современными фреймворками и библиотеками
Интеграция @container с современными фреймворками и библиотеками, такими как React и Vue, достаточно проста. Например, в React можно использовать @container для создания адаптивных компонентов следующим образом:
const MyComponent = () => (
<div className="container">
<div className="content">Content goes here</div>
</div>
);
const styles = `
.container {
container-type: inline-size;
}
@container (min-width: 500px) {
.content {
font-size: 1.5rem;
}
}
`;
export default MyComponent;
Советы и рекомендации
- Используйте для создания компонентов, которые адаптируются к размерам родительского элемента.
- Сочетайте с медиазапросами для более гибкой адаптивной верстки.
- Следите за обновлениями поддержки браузеров и используйте полифилы при необходимости.
Заключение
Директива @container для создания адаптивов. Она позволяет применять стили на основе размеров контейнеров, обеспечивая большую гибкость и улучшая производительность.
- Освой нейросеть Perplexity и узнай, как пользоваться функционалом остальных ИИ в одном
- УЧАСТВОВАТЬ ЗА 0 РУБ.
- Расскажем, как получить подписку
- ПОКАЖЕМ, КАК РАЗВЕРНУТЬ МОДЕЛЬ нейросеть DEEPSEEK R1 ПРЯМО НА СВОЁМ КОМПЬЮТЕРЕ