HTML\CSS → Шпаргалка по CSS-селеткорам

Основные селекторы:
* – все элементы, div * — все дочерние элементы
h1 – по тегу
#id — по id
.class — по классу
.class1.class2 – одновременно с двумя классами
p strong — вложенные
ul > li — только первого уровня вложенности
div + p — соседние, первый абзац следующий за div
div ~ p — родственные, все абзацы следующие за div

Псевдоклассы:
:first-child – первый потомок своего родителя
:last-child – последний потомок
:only-child – единственный потомок, соседних элементов нет
:nth-child(a) – потомок номер # своего родителя, например :nth-child(2) – второй потомок. Нумерация начинается с 1. 2n — каждый второй, odd — нечетные, even — четные.
:nth-child(2n+3) – каждый второй потомок, начиная с 3-го

Следующие псевдоклассы аналогичны предыдущим, но выбирают потомков с учетом типа:
:first-of-type
:last-of-type
:only-of-type
:nth-of-type
:nth-last-of-type

Пример:

<div>
    <span>Some different element</span>
    <ul><li>1</li></ul>
    <ul><li>2</li></ul>
    <ul><li>3</li></ul>
</div>
...
ul:first-of-type {}

:not(селектор) – все, кроме подходящих под селектор
:empty – пустой, не содержит вложенных элементов (даже текста)
:checked, :disabled, :enabled – состояния полей ввода
:focus – ссылка или поле ввода в фокусе
:link — не посещенная ссылка
:visited — посещенная ссылка
:active — активная ссылка
:hover – элемент под курсором мыши
:target – сработает для элемента, ID которого совпадает с анкором #id в URL
:disabled — заблокированные элементы (установлен атрибут disabled)
:enabled — не заблокированные элементы (не установлен disabled)
:read-only — выберет все поля доступные только для чтения (аналог input[readonly])
:read-write — выберет все поля доступные для редактирования (аналог input:not([readonly]))
:required — выберет все объязательные поля (с атрибутом required)
:optional — выберет поля у которых не указан атрибут required
:checked — выбрть отмеченные поля checkbox или radio (не отмеченные можно выбрать через input:not(:checked))
:valid — выберет элементы, у которых введенно верное значение
:invalid — выберет элементы, у которых введенно не верное значение
:in-range — выбирает все элементы, значение которых попадает в диапазон max и min
:out-of-range — выбирает все элементы, значение которых не попадает в диапазон max и min

Псевдоэлементы:
::before — добавляет содержимое в начало элемента
::after — добавляет содержимое в конец элемента
::first-line — задает стиль первой строки форматированного текста
::first-letter — определяет стиль первого символа в тексте элемента

Селекторы атрибутов:
[checked] – присутствует атрибут
[attr="value"] – атрибут равен “value”
[attr^="http"] – атрибут начинается с текста
[attr$=".com"] – атрибут заканчивается на текст
[attr|="value"] – атрибут равен “value” или начинается с “value-” (например равен “value-1”)
[attr*="valut"] – атрибут содержит подстроку “value” (например равен “myvalue”)
[attr~="bar"]– атрибут содержит “bar” как одно из значений через пробел, например: data-attr='foo bar'