Найти в Дзене
GoToWeb

Создание сайтов с нуля - урок 31 - Псевдоклассы CSS

Псевдоклассы - это дополнения к обычным селекторам для еще более точной выборки элементов на странице по каким-то необычным или специфическим условиям. Например, условием может быть динамическое состояние элемента (например состояние наведения курсора мышки на элемент). Еще пример условия – это порядковый номер элемента (например четные и нечетные строки таблицы) и т.д.

Псевдоклассы состояний

Первыми рассмотрим псевдоклассы состояний, которые применяются после действий пользователя. При этом “действием” может считаться и отсутствие действия, например, в случае с непосещенной ссылкой.

Псевдокласс :link представляет нормальное состояние ссылок и используется для выделения ссылок, которые до сих пор не посещены. В стилях рекомендуется объявлять этот псевдокласс перед всеми остальными классами этой категории.

a:link {color: orange;}

Псевдокласс :visited используется для стилизации ссылок, уже посещенных пользователем. В стилях он указывается вторым, после псевдокласса :link:

a:visited {color: blue;}

Псевдокласс :hover используется для стилизации элемента, на который в данный момент наведен курсор. Это может быть любой элемент, хотя применение этого псевдокласса для ссылок является самым распространенным случаем.

a:hover {color: orange;}

Псевдокласс :active используется для стилизации “активированных” элементов, путем нажатия мыши или касания к экрану. Активация также может производиться и с клавиатуры, также как в случае с псевдоклассом :focus. Он и работает аналогично :focus, с единственной разницей, что псевдокласс :activeфиксирует событие между нажатием и отпусканием клавиши мыши.

Оно следует четвертым в стилях (после :hover).

a:active {color: rebeccapurple;}

Псевдокласс :focus используется для стилизации элемента, получившего фокус с помощью курсора, касания или нажатия на клавиатуре. Он часто используется в элементах форм.

a:focus {color: green;}

Структурные псевдоклассы

Структурные псевдоклассы направлены на дополнительные данные в дереве документа или DOM и не могут быть заменены другим типом селекторов или их комбинацией.

Псевдокласс :first-child выделяет элемент, который является первым потомком своего родительского элемента.

li:first-child {color: orange;}

Псевдокласс :last-child выделяет элемент, которыя является последним дочерним элементом в родительском контейнере.

li:last-child {color: orange;}

Псевдокласс :first-of-type выделяет первый элемент своего типа в указанном родительском контейнере.

ul :first-of-type {color: orange;}

Псевдокласс :last-of-type выделяет последний элемент своего типа в родительском контейнере.

ul :last-of-type {color: orange;}

Псевдокласс :nth-child выделяет один или более элементов в зависимости от их порядкового номера в разметке. Это один из самых универсальных и надежных псевдоклассов в CSS. Все псевдоклассы :nth принимают аргумент в виде формулы в скобках. Формула может быть просто целым числом, может структурироваться в виде an+b или использовать ключевое слово odd или even.

В формуле an+b:

  • a это целое число;
  • n это литерал (т.е. мы просто используем букву n внутри формулы);
  • + это оператор (это может быть как +, так и -);
  • b это целое число, используемое только при использовании оператора.

Например: ol :nth-child(2) {color: orange;}

Псевдокласс :nth-of-type схож с :nth-child с той разницей, что он обладает большей специфичностью, так как выбирает конкретный тип элемента внутри родительского контейнера.

p:nth-of-type(2) {color: orange;}

Псевдокласс :nth-last-child работает аналогично :nth-child, но выбирает элементы не с начала, а с конца.

ol :nth-last-child(2) {color: orange;}

Псевдокласс :nth-last-of-type делает то же, что и :nth-of-type, но отсчитывая с конца.

p:nth-last-of-type(2) {color: orange;}

Псевдокласс :only-child выбирает единственного потомка родительского элемента.

ul :only-child {color: orange;}

Псевдокласс :only-of-type выбирает элемент, у которого нет соседних элементов того же типа. Он похож на :only-child, но более осмыслен за счет указания конкретного элемента.

li:only-of-type {color: orange;}

Псевдокласс :not также известен как псевдокласс-отрицание. Он принимает в скобках аргумент - другой селектор. Этим аргументом может быть и другой псевдокласс. Аргументы могут составлять цепочку, но сам :not не может в этой цепочке передаваться в качестве аргумента.

li:not(.first-item) {color: orange;}

Псевдокласс :target выбирает элемент, ID которого используется в качестве хэша в URL.

:target {background: yellow;}

Псевдоклассы валидации

С помощью псевдоклассов валидации, мы можем сделать процесс заполнения форм более плавным и приятным.

Заметьте, что несмотря на то, что большинство псевдоклассов этого раздела работают с элементами форм, некоторые из них могут работать и с другими элементами HTML.

Псевдокласс :checked выбирает радиокнопки, чекбоксы и опции, которые были отмечены пользователем.

Псевдокласс :default выбирает элемент, заданный в качестве дефолтного в группе похожих элементов.

Псевдокласс :disabled выбирает отключенный элемент формы (элемент, который пользователь не может выделить, отметить, активировать или перенести на него фокус).

:disabled {opacity: 0.5;}

Псевдокласс :enabled выбирает элементы, включенные для пользователя; по умолчанию все элементы формы включены, если в разметке им не задан атрибут disabled.

:enabled {opacity: 1; border: 1px solid green;}

Псевдокласс :empty выбирает элементы, в которых нет никакого содержимого. Если в элемент есть другой элемент HTML, символ или пробел, элемент не считается пустым.

div:empty {background: yellow;}