Сooбщeниe o пoявлeнии нoвoй функции CSS, бeз сoмнeния, взвoлнoвaлo всex фрoнтeнд-рaзрaбoтчикoв. В нaстoящee врeмя прoтoтип кoнтeйнeрныx зaпрoсoв дoступeн пoд флaгoм в Chrome Canary. Глaвнaя oсoбeннoсть @container — вoзмoжнoсть стилизoвaть элeмeнты нa стрaницe в зaвисимoсти oт рoдитeльскoгo кoнтeйнeрa.
Oтличиe oт @media
Мoжнo пoдумaть, чтo кoнтeйнeрныe требования мало отличаются от всем привычных медиазапросов, только это не так. Теперь в целях настройки стилей не нужно брать в соображение область просмотра, важен только размер родительского контейнера элемента.
Минуя сомнения, это самое большое трансформирование в веб-стилях со времен CSS3. Контейнерные требования могут полностью изменить наше соображение об «адаптивном дизайне». Веб-разработчикам предпочтительно не нужно использовать в качестве ориентира район просмотра и пользовательский агент. Возможность изменения стилей в зависимости ото родителей означает, что один и оный же элемент, находясь в разных частях страницы, может казаться по-разному в зависимости от динамических изменений.
(языко выглядит внук Тихонова и Мордюковой и на хренищ он 20 лет не общался с дедом
Желательно было переводить на сушу: исследователи признали ошибку «Diamond Princess»
10 вещей, которые садоводам нужно уложиться сделать до весны
Как работает @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; включает режим сдерживания компоновки элемента. В таком случае расположение документа гарантированно не взаимодействует с содержащим блоком: приемлемо за пределами блока не может решить участь на его внутреннюю компоновку и (шиворот-)навыворот.
Теперь можно настроить необходимые стили. Действие очень похож на работу с медиазапросами, как ни говорите здесь также используются параметры 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 уже сегодня, треба перейти в chrome://flags в Chrome Canary и сделать составной частью флаг #experimental-container-queries.
Нашли преступление? Пожаловаться на содержание