Все CSS селекторы в мире

Изучил все селекторы на тренажерах, что-то их оказалось очень много, решил законспектировать чтобы запомнить их все. На всякий случай выложу здесь, вдруг кому пригодится освежить в памяти или я потеряю свой файл с данным конспектом.

Простые селекторы:

  1. Селектор по тегу ---------------------------------------------------------------------------------------------teg
  2. Селектор по классу -------------------------------------------------------------------------------------.class
  3. Селектор по id ------------------------------------------------------------------------------------------------#id

Комбинированные селекторы:

  1. Селектор уточняющий по тегу и классу -
    teg.class
  2. Селектор работающий ТОЛЬКО при наличии двух и более классов -
    .class1.class2
  3. Селектор контекстный срабатывает для всех потомков указанного родителя -
    .parent .child
    /вместо классов могут быть любые из выше перечисленных селекторов - #id, teg и т.д./
  4. Селектор контекстный срабатывает только для дочернего элемента внутри указанного родителя -
    .parent>.child
    /вместо классов могут быть любые из выше перечисленных селекторов - #id, teg и т.д./
  5. Селектор применяет CSS правило ко второму селектору идущему СРАЗУ за первым -
    .class1+.class2
    /вместо классов могут быть любые из выше перечисленных селекторов - #id, teg и т.д./
  6. Селектор применяет CSS правило ко второму селектору идущему НЕ СРАЗУ за первым -
    .class1~.class2
    /вместо классов могут быть любые из выше перечисленных селекторов - #id, teg и т.д./

Селекторы по атрибуту:

  1. Селектор по атрибуту значение которого ПОЛНОСТЬЮ СОВПАДАЕТ -
    input[type="text"]
  2. Селектор по атрибуту значение которого НАЧИНАЕТСЯ на какое-то определённое слово -
    input[name^="some-"]
    /это может быть слог или подстрока/
  3. Селектор по атрибуту значение которого ЗАКАНЧИВАЕТСЯ на какое-то определённое слово -
    a[href$=".pdf"]
    /это может быть слог или подстрока/
  4. Селектор по атрибуту значение которого ВКЛЮЧАЕТ В СЕБЯ какие-то определённые символы, слог или подстроку -
    p[class*="any"] - тег p в данном случае уточняющий, можно селектор писать без тега.
    /это может быть слог или подстрока/
  5. Селектор по атрибуту значение которого включает в себя какое-то определённое слово -
    .class[title~="Имя"]
    /это должно быть именно слово целиком/
  6. Селектор по атрибуту объединяет 1 и 2 селекторы по атрибуту -
    input[value|="двадцать-"]
    /это должно быть слово целиком, или начинаться с этого слова и заканчиваться на знак"-"/

Селекторы по псевдоклассам (на примере тега li):
В случае если родительский тег содержит теги ОДНОГО типа:

  1. li:nth-child(n)
    Выберет n-ный элемент li в списке - отсчитывая СВЕРХУ вниз по ходу чтения документа.
  2. li:nth-last-child(n)
    Выберет n-ный элемент ли в списке - отсчитывая СНИЗУ вверх по ходу чтения документа.
  3. li:first-child
    Выберет выберет ПЕРВЫЙ элемент внутри родительского тега.
  4. li:last-child
    Выберет выберет ПОСЛЕДНИЙ элемент внутри родительского тега.
  5. li:only-child
    Выберет элемент внутри родительского тега, если в родительском теге больше нет никаких элементов.

В случае если родительский тег содержит теги РАЗНОГО типа:

  1. li:nth-of-type(n)
    Выберет n-ный элемент ли в списке среди тегов типа li - отсчитывая СВЕРХУ вниз по ходу чтения документа.

  2. li:nth-last-of-type(n)
    Выберет n-ный элемент ли в списке среди тегов типа li - отсчитывая СНИЗУ вверх по ходу чтения документа.

  3. li:first-of-type
    Выберет выберет ПЕРВЫЙ элемент внутри родительского тега из заданного типа.

  4. li:last-of-type
    Выберет выберет ПОСЛЕДНИЙ элемент внутри родительского тега из заданного типа.

  5. li:only-of-type
    Выберет выберет элемент внутри родительского тега, если в родительском теге больше нет других элементов заданного типа.

  6. li:empty
    Выбирает только те теги, у которых нет дочерних элементов (в том числе текстовых узлов).

  7. li:not(:first-child):not(:last-child):not(.someclass)
    Выберет все теги li кроме первого, последнего и содержащего класс .someclass

Селекторы по атрибутам тега input:

  1. input:enabled
    Выберет все не заблокированные инпуты.
  2. input:disabled
    Выберет все заблокированные инпуты.
  3. input:read-only
    Выберет все поля, доступные только для чтения.
  4. input:read-write
    Выберет все поля без атрибута readonly, даже если у них есть атрибут disabled, или type=“submit”. Может быть записать как not(:read-only).
  5. input:required
    Выберет все поля, обязательные для заполнения.
  6. input:optional
    Выберет все элементы, у которых НЕ указан атрибут required.
  7. input:checked
    Выберет все элементы input с типами checkbox или radio, которые являются выбранными (отмеченными).
  8. input:valid
    Выберет все элементы, у которых введенное значение удовлетворяет требованиям.Актуально для типов полей (email, url и др.) или специфических настроек (pattern, min/max и др.)
  9. input:invalid
    Выберет все элементы, у которых введенное значение НЕ удовлетворяет требованиям.Актуально для типов полей (email, url и др.) или специфических настроек (pattern, min/max и др.)
  10. input:in-range
    Выбирает все элементы, значение которых попадает в указанный диапазон. Актуально для типов полей с атрибутами min/max.
  11. input:out-of-range
    Выбирает все элементы, значение которых НЕ попадает в указанный диапазон. Актуально для типов полей с атрибутами min/max.

Можно комбинировать данные селекторы, например input[type="text"]:optional, чтобы выбрать только текстовые поля, заполнение которых опционально.

1 лайк

Почему-то тема больше не редактируется и даже не удаляется.
Нужно изменить:

  1. Комбинированные селекторы 6 пункт - Селектор выбирает ВСЕ элементы идущие за элементом с .class1, независимо от того расположены они СРАЗУ за ним или нет.
  2. Селекторы по атрибуту.
    Как я понял еще есть селектор просто по атрибуту БЕЗ ЗНАЧЕНИЯ и БЕЗ уточнения к какому элементу этот атрибут относится.
    Пример [class] - выберет ВСЕ элементы у которых есть класс, не зависимо от того какие значения указаны классу.

Забыл указать динамические псевдоклассы:
:hover - срабатывает при наведении указателя мыши на элемент;
:focus - срабатывает когда элемент в фокусе;
:active - срабатывает когда элемент нажат;
:visited - срабатывает на посещенных ссылках;
:link - срабатывает на не посещенных ссылках.

Примечание
Псевдоклассы вида nth-child называются структурными псевдоклассами. К их числу относится относится псевдокласс :root - выбирает элемент, являющийся корневым в документе (соответствует тегу <html>).