CSSContainerRule: свойство containerQuery
Базовая версия 2023
Новое свойство
С февраля 2023 года эта функция работает на последних устройствах и версиях браузеров. Возможно, эта функция не будет работать на более старых устройствах или браузерах.
Только для чтения containerQuery свойство интерфейса CSSContainerRule возвращает строку, представляющую условия контейнера, которые оцениваются при изменении размера контейнера, чтобы определить, применяются ли стили в связанном @container.
Например, значение containerQuery для @container ниже равно (min-width: 700px):
@container sidebar (min-width: 700px) {
.card {
font-size: 2em;
}
}
Значение
Строка, содержащая запрос к контейнеру.
Обратите внимание, что значение может не совпадать с исходной строкой, так как могут выполняться нормализации, такие как удаление пробелов.
Примеры
В примере ниже определяется безымянное правило @container, и отображаются свойства связанного CSSContainerRule. CSS такой же, как в примере @container Настройка стилей на основе размера контейнера.
Сначала мы определяем HTML для card (<div>) внутри post.
<div class="post">
<div class="card">
<h2>Card title</h2>
<p>Card content</p>
</div>
</div>
CSS для элемента контейнера указывает тип контейнера. Затем @container применяет новую ширину, размер шрифта и цвет фона к элементу "card", если ширина меньше 650 пикселей.
<style id="example-styles">
/* A container context based on inline size */
.post {
container-type: inline-size;
}
/* Apply styles if the container is narrower than 650px */
@container (width < 650px) {
.card {
width: 50%;
background-color: gray;
font-size: 1em;
}
}
</style>
В следующем коде получается HTMLStyleElement, связанный с примером, используя его id, а затем используется его свойство sheet для получения StyleSheet. Из StyleSheet мы получаем набор cssRules, добавленных в лист. Поскольку мы добавили @container в качестве второго правила выше, мы можем получить связанный CSSContainerRule, используя второй элемент (с индексом "1") в cssRules. И наконец, выводим имя контейнера и свойства запроса.
const exampleStylesheet = document.getElementById("example-styles").sheet;
const exampleRules = exampleStylesheet.cssRules;
const containerRule = exampleRules[1]; // a CSSContainerRule representing the container rule.
log(`CSSContainerRule.containerQuery: "${containerRule.containerQuery}"`);
Пример вывода показан ниже. Раздел журнала содержит строку запроса. Блок «card» должен изменять фон, когда ширина страницы переходит через 650 пикселей.
Спецификации
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari в IOS | Samsung Internet | WebView Android | |
containerQuery |
111 | 111 | 110 | 97 | 17 | 111 | 110 | 75 | 17 | 22.0 | 111 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/CSSContainerRule/containerQuery