Spec-Zone.ru › CSS

Список селекторов

Базовая поддержка Широко доступно

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

Список селекторов CSS (,) выбирает все соответствующие узлы. Список селекторов — это перечень селекторов, разделённых запятыми.

Описание

Если для нескольких селекторов используются одинаковые объявления, их можно сгруппировать в список, разделённый запятыми. Списки селекторов также можно передавать в качестве параметров некоторым функциональным псевдоклассам CSS. Перед запятой и/или после неё могут быть пробелы.

Следующие три объявления эквивалентны:

span {
  border: red 2px solid;
}
div {
  border: red 2px solid;
}
span,
div {
  border: red 2px solid;
}
:is(span, div) {
  border: red 2px solid;
}

Примеры

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

Группировка в одну строку

В этом примере показана группировка селекторов в одну строку с помощью списка, разделённого запятыми.

h1, h2, h3, h4, h5, h6 {
  font-family: "Helvetica", "Arial";
}

Группировка в несколько строк

В этом примере показана группировка селекторов в несколько строк с помощью списка, разделённого запятыми.

#main,
.content,
article,
h1 + p {
  font-size: 1.1em;
}

Допустимые и недопустимые списки селекторов

Недопустимый селектор не представляет ничего и, следовательно, ничего не выбирает. Если список селекторов содержит недопустимый селектор, весь блок стилей игнорируется, за исключением псевдоклассов :is() и :where(), которые принимают списки селекторов с пропуском недопустимых селекторов.

Недопустимый список селекторов

Недостаток использования списка селекторов заключается в том, что один неподдерживаемый селектор в списке делает недействительным всё правило.

Рассмотрим следующие два набора правил CSS:

h1 {
  font-family: sans-serif;
}
h2:invalid-pseudo {
  font-family: sans-serif;
}
h3 {
  font-family: sans-serif;
}
h1,
h2:invalid-pseudo,
h3 {
  font-family: sans-serif;
}

Они не эквивалентны. В первом наборе правил стили будут применены к элементам h1 и h3, но правило h2:invalid-pseudo не будет обработано. Во втором наборе правил, поскольку один из селекторов в списке недопустим, всё правило не будет обработано. Поэтому к элементам h1 и h3 не будут применены стили: если хотя бы один селектор в списке недопустим, весь блок стилей игнорируется.

Список селекторов с пропуском недопустимых селекторов

Проблему недопустимого списка селекторов можно решить с помощью псевдокласса :is() или :where(), которые принимают список селекторов с пропуском недопустимых селекторов. Каждый селектор в таком списке обрабатывается отдельно. Поэтому все недопустимые селекторы в списке игнорируются, а допустимые используются.

Продолжая предыдущий пример, можно видеть, что следующие два набора правил CSS теперь эквивалентны:

h1 {
  font-family: sans-serif;
}
h2:maybe-unsupported {
  font-family: sans-serif;
}
h3 {
  font-family: sans-serif;
}
:is(h1, h2:maybe-unsupported, h3) {
  font-family: sans-serif;
}

Разница между ними заключается в том, что специфичность :is() равна специфичности его аргумента с наибольшей специфичностью, тогда как селектор :where() и параметр-список селекторов с пропуском недопустимых селекторов не добавляют веса специфичности.

Относительный список селекторов

Относительный список селекторов — это разделённый запятыми список селекторов, который обрабатывается как относительные селекторы, начинающиеся с явного или подразумеваемого комбинатора.

h2:has(+ p, + ul.red) {
  font-style: italic;
}

В приведённом выше примере курсивное начертание будет применено к любому заголовку h2, за которым непосредственно следует <p> или <ul class="red">. Обратите внимание, что псевдоэлементы и селектор :has() недопустимы в относительном списке селекторов :has().

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

Спецификация
Selectors Level 4
# grouping

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

Настольные компьютеры Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome для Android Firefox для Android Opera для Android Safari на iOS Samsung Internet WebView для Android WebView на iOS
list
1
12
1
3.5
1
18
4
10.1
1
1.0
4.4
1

См. также

  • Псевдоклассы :is() и :where() принимают списки селекторов с пропуском недопустимых селекторов.
  • Псевдокласс :not() принимает обычный список селекторов
  • Псевдокласс :has() принимает относительный список селекторов.
  • Модуль селекторов CSS
  • Селекторы и комбинаторы

© 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/Selectors/Selector_list

Spec-Zone.ru

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