Типы 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.