Селекторы CSS
Селектор определяет элемент документа, к которому применяется стиль. В качестве селектора может выступать простой селектор или целая цепочка простых селекторов, разделенных комбинаторами.
Простые селекторы
В таблице приводятся описания простых селекторов с пояснениями и примерами.
| Селектор | Элемент страницы |
|---|---|
tag |
Все элементы <tag> в документе (типовой селектор). |
* |
Универсальный селектор для выбора всех элементов страницы. |
tag.classname |
Элементы <tag>, у которых атрибут class имеет значение из нескольких слов и одно из них classname. |
tag#idname |
Элемент <tag>, чей атрибут id имеет значение idname. |
tag[attr] |
Элементы <tag> с атрибутом attr. |
tag[attr="val"] |
Элементы <tag>, у которых атрибут attr имеет значение val. |
tag[attr~="val"] |
Элементы <tag>, у которых атрибут attr имеет значение из нескольких слов и одно из них val. |
tag[attr^="val"] |
Элементы <tag>, у которых атрибут attr начинается со строки val. |
tag[attr$="val"] |
Элементы <tag>, у которых атрибут attr заканчивается строкой val. |
tag[attr*="val"] |
Элементы <tag>, у которых атрибут attr содержит подстроку val. |
tag[attr|="val"] |
Элементы <tag>, у которых атрибут attr имеет значение из нескольких слов, разделенных дефисом, и первое из них val. |
tag:pseudo-class |
Элементы <tag>, которые соответствуют псевдоклассу :pseudo-class. |
tag::pseudo-element |
Соответствующие псевдоэлементы. |
В простом селекторе нельзя использовать пробелы, так как пробел является комбинатором. Любой простой селектор должен начинаться с универсального или типового селектора. При использовании универсального селектора символ
можно опустить, но это может ухудшить восприятие кода.*
Комбинаторы
В таблице ниже представлены комбинаторы, которые можно использовать в селекторе (Sel1 и Sel2 - простые селекторы).
| Комбинатор | Элемент страницы |
|---|---|
Sel1 Sel2 |
Элемент Sel2, который является потомком элемента Sel1. |
Sel1 > Sel2 |
Элемент Sel2, который является дочерним для элемента Sel1. |
Sel1 ~ Sel2 |
Элемент Sel2, который является сестринским для элемента Sel1. |
Sel1 + Sel2 |
Элемент Sel2, который является сестринским для элемента Sel1 и следует непосредственно за ним. |
Группировка селекторов
Если разным селекторам применяются одинаковые свойства, тогда их можно сгруппировать для оптимизации кода. В этом случае селекторы записываются через запятую.
h1 {font-size: 150%;}
*.header {font-size: 150%;}
/* эквивалентно */
h1, *.header {font-size: 150%;}
При группировке селекторов следует учитывать тот факт, что если хотя бы один из селекторов будет иметь недопустимый формат, тогда вся группа селекторов будет считаться недопустимой и стили будут проигнорированы для всех элементов.
h1 {font-size: 150%;} /* применится */
*..header {font-size: 150%;} /* не применится */
/* не эквивалентно */
h1, *..header {font-size: 150%;} /* не применится */