Псевдо-классы и псевдо-элементы
Псевдо-классы и псевдо-элементы решают группу задач, связанных с выбором конкретного элемента списка или с изменением поведения объекта в связи с возникновением какого-либо события. Здесь мы разберём лишь часть из существующих псевдо-элементов и псевдо-классов, а больше вы всегда сможете узнать здесь: Псевдо-классы и псевдо-элементы
Псевдо-классы
Псевдо-классы представляют собой ключевое слово, начинающееся с двоеточия (:), которое добавляют после селектора:
selector:pseudo-class { ... }
Ниже приведён список наиболее популярных псевдо-классов
-
:hover
Срабатывает при наведении курсора на элемент -
:visited
Позволяет выбрать посещённые ссылки -
:active
Срабатывает при нажатии на элемент, но может быть применим только к элементам<a>и<button> -
:focus
Срабатывает при получении элементом фокуса. Работает только для элементов<a>,<button>,<input>,<textarea> -
:checked
Срабатывает для элемента<input type="checkbox">или<input type="radio">. Позволяет применять стили в том случае, если на элементе стоит отметка -
:disabled
Срабатывает, если элемент имеет атрибутdisabled, к примеру, элемент<input type="..." disabled>или<button disabled> -
:required
Срабатывает, если элемент имеет атрибутrequired, всегда для элемента<input required> -
:first-child
Позволяет выбрать первый элемент в своем родителе -
:last-child
Позволяет выбрать последний элемент в своем родителе -
:nth-child
Позволяет выбирать один или более элементов, основываясь на их позиции среди группы соседних элементов.
Примеры:
ul li:nth-child(2)выберет второй элемент
ul li:nth-child(2n)выберет каждый второй элемент (через один)
ul li:nth-child(3n+1)выберет 1,4,7,9 ... и так далее, через два элементы. -
:nth-last-child
Точно так же, но счёт идёт с последнего элемента к первому. К примеру, для выбора предпоследнего элемента списка:ul li:nth-last-child(2) -
:not()
"НЕ". Это функция, принимающая селектор внутрь скобок. К примеру, нам нужно найти все ссылки, у которых нет атрибутаtarget:
a:not([target])
Ещё пример: требуется найти все статьи, не имеющие класса.top:
article:not(.top)
Псевдо-элементы
Псевдо-элементов значительно меньше, а отличить их можно по двойному двоеточию (::), которое добавляется к селектору.
selector::pseudo-element { ... }
Браузерами поддерживается и устаревший синтаксис с одинарным двоеточием.
Псевдо-элементы ведут себя как элементы, то есть, у них есть размеры, они могут быть спозиционированы, их видно. Псевдо-классы же мы увидеть не могли,могли лишь только увидеть их влияние на элементы. Рассмотрим псевдо-элементы подробнее:
-
::before
Создаёт псевдо-элемент, который будет являться первым потомком элемента. Не работает без свойстваcontent: '';
a::before{ content: '♥'; }В этом примере, перед каждой ссылкой на сайте будет добавляться сердечко. -
::after
Работает точно так же, как и ::before, но псевдо-элемент создаётся в самом конце и будет являться последним потомком.
С остальными псевдо-элементами вы познакомитесь позже, на личной практике. Они используются заметно реже. Конечно, ссылки на них я приведу: