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

Сообщение о появлении новой функции CSS, без сомнения, взволновало всех фронтенд-разработчиков. В настоящее время прототип контейнерных запросов доступен под флагом в Chrome Canary. Главная особенность @container — возможность стилизовать элементы на странице в зависимости от родительского контейнера.

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

Отличие от @media

Можно подумать, что контейнерные запросы мало отличаются от всем привычных медиазапросов, но это не так. Теперь для настройки стилей не нужно учитывать область просмотра, важен только размер родительского контейнера элемента.

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

Без сомнения, это самое большое изменение в веб-стилях со времен CSS3. Контейнерные запросы могут полностью изменить наше представление об «адаптивном дизайне». Веб-разработчикам больше не нужно использовать в качестве ориентира область просмотра и пользовательский агент. Возможность изменения стилей в зависимости от родителей означает, что один и тот же элемент, находясь в разных частях страницы, может выглядеть по-разному в зависимости от динамических изменений.

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

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

В примере используются 2 блока со следующей разметкой:

<div class=»card-container»>
<div class=»card»>
<figure> … </figure>
<div>
<div class=»meta»>
<h2>…</h2>
<span class=»time»>…</span>
</div>
<div class=»notes»>
<p class=»desc»>…</p>
<div class=»links»>…</div>
</div>
<button>…</button>
</div>
</div>
</div>

Далее устанавливаем параметры родительского элемента .card-container, для которого будем запрашивать стили контейнера. Значение inline-size означает, что компонент реагирует только на изменения ширины родительского элемента.

Значение contain: layout; включает режим сдерживания компоновки элемента. В таком случае компоновка документа гарантированно не взаимодействует с содержащим блоком: ничего за пределами блока не может повлиять на его внутреннюю компоновку и наоборот.

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

Теперь можно настроить необходимые стили. Процесс очень похож на работу с медиазапросами, ведь здесь также используются параметры max-width и min-width.

Рассмотри несколько фрагментов кода в качестве примера. Когда родительский контейнер меньше 850px, убираем элементы с классом .links и меняем размер шрифта.

@container (max-width: 850px) {
.links {
display: none;
}

.time {
font-size: 1.25rem;
}

/* … */
}

Если размер родительского контейнера меньше 650px, то изменяется расстояние между строками с классом .card.

@container (max-width: 650px) {
.card {
gap: 1rem;
}

/* … */
}

Итоговый результат использования контейнерных запросов можно посмотреть на видео ниже.

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

Использование контейнерных запросов совместно с медиазапросами

Главная особенность контейнерных запросов — возможность разделить большие и маленькие макеты. Можно использовать медиазапросы для стилизации всей страницы, а функцию @container применять для тонкой настройки отдельных элементов.

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

Таким образом, появляется возможность большего контроля при веб-разработке, который позволяет создать интерфейсы нового уровня.

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

Чтобы поэкспериментировать с @container уже сегодня, необходимо перейти в chrome://flags в Chrome Canary и включить флаг #experimental-container-queries.

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

Оцените статью
Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.