Селекторы 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%;} /* не применится */