Типы CSS селекторов
Разберем на какие общие типы можно разделить все CSS селекторы.
Смотрите также:
- Как браузер высчитывает значимость стилей - приоритеты и каскадность.
- Все CSS селекторы
- Функции CSS.
Базовые селекторы
Такие селекторы указываются в HTML документе (их можно увидеть в исходном коде страницы). Поддержка браузерами - 98.75%.
*Универсальный селектор- Выбирает все элементы.
Синтаксис:*ns|**|*
Пример:*будет соответствовать всем элементам на странице. tagСелекторы по типу элемента (по тегу)- Этот базовый селектор выбирает тип элементов.
Синтаксис:элемент
Пример:inputвыберет все элементы<input>. .classСелекторы по классу- Этот базовый селектор выбирает элементы, основываясь на значении их атрибута class.
Синтаксис:.имяКласса
Пример:.indexвыберет все элементы<input class="index">. #idСелекторы по id- Этот базовый селектор выбирает элементы, основываясь на значении их id атрибута. Идентификатор должен быть уникальным, т.е. используется только для одного элемента в HTML-документе.
Синтаксис:#имяИдентификатора
Пример:#indexвыберет элемент<input id="index">. [attr]Селекторы по атрибуту- Этот селектор выбирает все элементы, имеющие данный атрибут или атрибут с определённым значением.
Синтаксис:[attr][attr=value][attr~=value][attr|=value][attr^=value][attr$=value][attr*=value].
Пример:[autoplay]выберет все элементы<input autoplay="index">(независимо от его значения).
Селекторы Псевдо
:Псевдо-классыЗнак
:позволяет выбрать элементы, основываясь на информации, которой нет в дереве элементов.Псевдо-классы ссылок:   a:linkВсе не посещенные ссылки. a:visitedВсе посещенные ссылки. a:activeВсе активные ссылки. a:hoverЭлемент над которым проходит указатель мыши. Псевдо-классы на одном уровне:   *:first-childЛюбой первый элемент в блоке. *:last-childЛюбой последний элемент в блоке. *:only-childЛюбой элемент в блоке, если там всего один элемент. *:nth-child(2)Любой второй элемент в блоке. *:nth-child(2n)Любые элементы в блоке по счету: 2, 4, 6, … (чётные). *:nth-child(even)Любые элементы в блоке по счету: 2, 4, 6, … (чётные). *:nth-child(2n+1)Любые элементы в блоке по счету: 1, 3, 5, … (нечётные). *:nth-child(odd)Любые элементы в блоке по счету: 1, 3, 5, … (нечётные). *:nth-child(3n+2)Элементы номер 2, 5, 8 и так далее. *:nth-last-child(2)Любой второй элемент в блоке с конца. Псевдо-классы на одном уровне с тем же тегом:   p:first-of-typeВыбор первого дочернего элемента <p>.p:last-of-typeВыбор последнего дочернего элемента <p>.p:only-of-typeВыбор дочернего элемента <p>, если у родителя элемент<p>всего один.p:nth-of-type(2)Выбор второго дочернего элемента <p>.p:nth-last-of-type(2)Выбор второго дочернего элемента <p>с конца.Псевдо-классы Поля форм:   input:enabledВыбор включенного <input>. Обычно:enabledпросто не пишется.input:disabledВыбор выключенного <input>.input:focusВыбор <input>, который находится в фокусе (в который установлен курсор).input:checkedВыбранный элемент <input>типа radio илиcheckbox.
Псевдоклассы: наглядное пособиеОстальные Псевдо-классы:   :rootВыбор корневого элемента в документе. p:emptyПустой элемент <p>, в котором нет ни текста ни элементов.p:lang(ru)Выбор элемента <p>с атрибутомlang, значение которого начинается сru.:targetВыбор активного элемента на странице, который имеет якорную ссылку. :not(p)Выбор всех элементов, кроме <p>.::Псевдо-элементыЗнак
::позволяет выбрать элементы, которых нет в HTML. Можно и с одинарного:.Для различия, Псевдо-элементы принято помечать двойным двоеточием
::, а псевдо-классы одинарным:. Но это лишь рекомендация, на деле можно все помечать одинарным:.p::first-letterВыбирает первую букву элемента <p>.p::first-lineВыбирает первую строку элемента <p>.p::beforeВставляет указанное в content:''содержимое в начало<p>.p::afterВставляет указанное в content:''содержимое в конец<p>.p::selectionОформит выделенный (мышкой) текст внутри <p>.
Объединение селекторов
Чтобы объединить несколько отдельных селекторов в один, скажем так, сложный селектор нужно использовать символы комбинаторы - это: , > ~ +.
,Комбинатор запятаяA, B— Это способ группировки, он выбирает все совпадающие узлы.Комбинатор потомков (пробел)A B— Выбирает элементы, которые находятся внутри указанного элемента (вне зависимости от уровня вложенности).>Комбинатор дочерних селекторовA > B— В отличие от пробела выбирает только прямых потомков - это только дочерними элементы первого уровня.
~Комбинатор всех следующих элементовA ~ B— Выбирает все элементы, которые идут после указанного элемента и находятся на том же уровне вложенности (с тем же родителем).+Комбинатор первого следующего элементаA + B— Выбирает элемент, который находится непосредственно после указанного элемента, если у них общий родитель.Примеры комбинаторов div, spanВыберет оба элемента - и <div>и<span>.div spanВсе <span>внутри<div>.div > spanВсе <span>, у которых родитель<div>.div ~ pВсе элементы <p>, которые находятся сразу после<div>.div + pОдин элемент <p>, который находится сразу после<div>..c1.c2Элементы одновременно с двумя классами c1иc2.