Spec-Zone.ru › CSS

Свойство CSS `container-name`

Baseline Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и во многих версиях браузеров. Она доступна во всех браузерах с февраля 2023 года.

Свойство CSS container-name задаёт список имён контейнеров запросов, используемых правилом @container в запросе контейнера.

Синтаксис

container-name: none;

/* A single name */
container-name: my-layout;

/* Multiple names */
container-name: my-page-layout my-component-library;

/* Global Values */
container-name: inherit;
container-name: initial;
container-name: revert;
container-name: revert-layer;
container-name: unset;

Значения

Это свойство задаётся списком значений <custom-ident>, разделённых пробелами, или ключевым словом none:

none
Значение по умолчанию. У контейнера запросов нет имени.
<custom-ident>
Регистрозависимая строка, используемая для идентификации контейнера. Действуют следующие условия:
  • Имя не должно совпадать с or, and, not или default.
  • Значение имени не должно быть заключено в кавычки.
  • Разрешено использовать идентификатор с дефисами, предназначенный для обозначения идентификаторов, заданных автором (например, --container-name).
  • Разрешается указывать несколько имён, разделённых пробелами.

Формальное определение

Исходное значение none
Применяется к всем элементам
Наследуется нет
Вычисленное значение <code>none</code> или упорядоченный список идентификаторов
Тип анимации Не анимируется

Формальный синтаксис

container-name = 
  none |
  <custom-ident>+

Описание

Если имя не задано, запрос контейнера применяет стили к элементам на основе таких характеристик, как размер или состояние прокрутки ближайшего предка с контекстом изоляции.

Примечание: Потомкам контейнеров размеров можно задавать размеры с помощью единиц длины запросов контейнера.

Если контексту изоляции задано имя, на него можно ссылаться напрямую, указав это имя в правиле @container.

Контейнер запросов можно создать, присвоив элементу container-name, а затем в соответствующем правиле @container проверять только наличие этого имени, не задавая выражение запроса. Такие запросы контейнера только по имени позволяют выборочно применять стили к элементам, основываясь лишь на том, есть ли у них предок с заданным container-name.

Примеры

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

Рассмотрим следующий пример HTML — компонент карточки с заголовком и текстом:

<div class="card">
  <div class="post-meta">
    <h2>Card title</h2>
    <p>My post details.</p>
  </div>
  <div class="post-excerpt">
    <p>
      A preview of my <a href="https://example.com">blog post</a> about cats.
    </p>
  </div>
</div>

Чтобы создать контекст изоляции, добавьте к элементу в CSS свойство container-type. В следующем примере создаются два контекста изоляции: один для метаданных карточки, другой — для анонса публикации:

Примечание: Сокращённый синтаксис для этих объявлений описан на странице container.

.post-meta {
  container-type: inline-size;
}

.post-excerpt {
  container-type: inline-size;
  container-name: excerpt;
}

Запрос контейнера, заданный с помощью правила @container, применяет стили к элементам контейнера, если условие запроса выполняется. В следующем примере показаны два запроса контейнера: первый применяется только к содержимому элемента .post-excerpt, а второй — к содержимому элементов .post-meta и .post-excerpt:

@container excerpt (width >= 400px) {
  p {
    visibility: hidden;
  }
}

@container (width >= 400px) {
  p {
    font-size: 2rem;
  }
}

Дополнительные сведения о написании запросов контейнера см. на странице Запросы контейнеров CSS.

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

Контексту контейнера также можно присвоить несколько имён, разделённых пробелами:

.post-meta {
  container-type: inline-size;
  container-name: meta card;
}

Это позволит обращаться к контейнеру по любому из имён в правиле @container. Это полезно, если нужно обратиться к одному контейнеру в нескольких запросах, любой из которых может выполниться:

@container meta (width <= 500px) {
  p {
    visibility: hidden;
  }
}

@container card (width <= 200px) {
  h2 {
    font-size: 1.5em;
  }
}

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

В этом примере показано, как использовать запрос контейнера только по имени.

HTML

Добавим <div> с id, равным container, и три элемента <p>: два внутри контейнера и один за его пределами:

<div id="container">
  <p>I'm in the container.</p>
  <p>I'm also in the container.</p>
</div>
<p>I'm not in the container.</p>

CSS

Присвоим контейнеру имя:

#container {
  container-name: my-container;
}

Затем можно выборочно применить стили только к элементам внутри контейнеров с таким именем, как показано в следующем фрагменте.

@container my-container {
  p {
    background-color: lime;
    font-size: 1.3rem;
    width: 50vw;
    padding: 0.5rem;
    font-family: sans-serif;
  }
}

Результат

Заданные стили должны применяться только к первому и второму элементам <p>, но не к третьему.

Спецификации

Спецификация
Модуль условных правил CSS, уровень 5
# container-name

Совместимость с браузерами

Компьютер Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome для Android Firefox для Android Opera для Android Safari для iOS Samsung Internet WebView для Android WebView для iOS
container-name
105
105
110
91
16
105
110
72
16
20.0
105
16
name-only_queries
148
148
149
132
26.4
148
149
99
26.4
Нет
148
26.4
none
105
105
110
91
16
105
110
72
16
20.0
105
16

См. также

  • Запросы контейнеров CSS
  • Использование запросов размера и стиля контейнера
  • Использование запросов состояния прокрутки контейнера
  • @container — правило
  • Сокращённое свойство CSS container
  • Свойство CSS container-type
  • Свойство CSS content-visibility

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/container-name

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API