Структура селектора CSS
Селектор CSS представляет собой определённый шаблон элемента или элементов в структуре дерева. Термин «селектор» может относиться к простому селектору, составному селектору или сложному селектору. Когда они включены в :has() псевдокласс в качестве параметра, эти селекторы называются относительными селекторами, представляя элементы относительно одного или нескольких элементов-якорей.
Эти селекторы могут быть объединены в список селекторов, разделённый запятыми список селекторов. Если какой-либо селектор в списке неустойчивых селекторов недействителен, весь список селекторов считается недействительным.
Простой селектор
Простой селектор — это селектор с одним компонентом, например, одиночным селектором типа, селектором атрибута или псевдоклассом, который не используется в сочетании с другими компонентами селектора или комбинаторами. Считается, что данный элемент соответствует простому селектору, когда этот простой селектор точно описывает элемент. Любой селектор, содержащий один базовый селектор, селектор атрибута, псевдокласс или псевдоэлемент, является простым селектором.
#myId {
}
[pattern*="\d"] {
}
Составной селектор
Составной селектор — это последовательность простых селекторов, которые не разделены комбинатором. Составной селектор представляет собой набор одновременных условий для одного элемента. Считается, что данный элемент соответствует составному селектору, когда он соответствует всем простым селекторам в составном селекторе.
a#selected {
}
[type="checkbox"]:checked:focus {
}
В составном селекторе селектор типа или универсальный селектор должен стоять первым в последовательности селекторов. В последовательности допускается только один селектор типа или универсальный селектор. Так как пробел представляет собой комбинатор потомка, пробелы не допускаются между простыми селекторами, образующими составной селектор.
Сложный селектор
Сложный селектор — это последовательность одного или нескольких простых и/или составных селекторов, разделённых комбинаторами, включая пробельный комбинатор потомка.
Сложный селектор представляет собой набор одновременных условий для набора элементов.
a#selected > .icon {
}
.box h2 + p {
}
Селекторы можно читать справа налево. Например, a#selected > .icon соответствует всем элементам с классом icon, которые являются непосредственными потомками элемента <a> с идентификатором selected. Селектор .box h2 + p соответствует первому <p> , который сразу следует после любого элемента <h2>, являющегося потомком любого элемента с классом box.
Список селекторов
Список селекторов — это список простых, составных и/или сложных селекторов, разделённых запятыми. Считается, что данный элемент соответствует списку селекторов, если он соответствует любому (по крайней мере одному) селектору в этом списке.
#main,
article.heading {
}
Если какой-либо селектор в списке неустойчивых селекторов недействителен, весь список селекторов считается недействительным.
#main,
:bad-pseudoclass,
.validClass {
/* `:bad-pseudoclass` is invalid, invalidating this style block */
}
Псевдоклассы :is() и :where() могут использоваться для построения устойчивых списков селекторов.
Относительный селектор
Относительный селектор — это селектор, представляющий элемент относительно одного или нескольких элементов-якорей, предшествующих комбинатору. Относительные селекторы, не начинающиеся с явного комбинатора, имеют неявный комбинатор потомка.
Относительные селекторы не могут использоваться в списке селекторов. Вместо этого они принимаются в определённых контекстах, таких как псевдокласс :has().
:has(+ div#topic > #reference) {
}
:has(> .icon) {
}
dt:has(+ img) ~ dd {
}
Спецификации
| Спецификация |
|---|
| Селекторы Уровень 4 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_selectors/Selector_structure