Псевдоклассы — CSS | MDN
Псевдокласс в CSS — это ключевое слово, добавленное к селектору, которое определяет его особое состояние. Например, :hover может быть использован для изменения цвета кнопки при наведении курсора на неё.
div:hover {
background-color: #F89B4D;
}
Псевдоклассы дают возможность стилизовать элемент на основе не только отношений в DOM-дереве, но и основываясь на внешних факторах, таких как история посещений (например, :visited), состояние содержимого (вроде :checked у некоторых элементов формы) или позиции курсора мыши (например, :hover определяет, находится ли курсор мыши над элементом).
Примечание: В отличие от псевдоклассов, псевдоэлементы могут быть использованы для стилизации определённой части элемента.
selector:pseudo-class {
property: value;
}
Как и с обычными классами, можно совмещать вместе в одном селекторе любое число псевдоклассов.
:active:any(en-US):any-link:checked:default:defined:dir():disabled:empty:enabled:first:first-child:first-of-type:fullscreen:focus:hover:indeterminate:in-range:invalid:lang():last-child:last-of-type:left:link:not():nth-child():nth-last-child():nth-last-of-type():nth-of-type():only-child:only-of-type:optional:out-of-range:read-only:read-write:required:right:root:scope(en-US):target:valid:visited
| Спецификация | Статус | Комментарий |
|---|---|---|
| Fullscreen API | Живой стандарт | Определён :fullscreen.![]() |
| HTML Living Standard | Живой стандарт | Нет изменений от HTML5. |
| Selectors Level 4 | Рабочий черновик | Определены :any-link, :local-link, :scope, :active-drop-target, :valid-drop-target, :invalid-drop-target, :current, :past, :future, :placeholder-shown, :user-error, :blank, :nth-match(), :nth-last-match(), :nth-column(), :nth-last-column() и :matches(). Нет существенных изменений для псевдоклассов, определённых в Selectors Level 3 и HTML5 (не рассматривая семантическое значение). |
| HTML5 | Рекомендация | Определено семантическое значение в HTML контексте для :link, :visited, :active, :enabled, :disabled, :checked и :indeterminate. Определены :default, :valid, :invalid, :in-range, :out-of-range, :required, :optional, :read-only, :read-write и :dir(). |
| CSS Basic User Interface Module Level 3 | Рекомендация | Определены :default, :valid, :invalid, :in-range, :out-of-range, :required, :optional, :read-only и :read-write, но без связанного семантического значения. |
| Selectors Level 3 | Рекомендация | Определены :target, :root, :nth-child(), :nth-last-of-child(), :nth-of-type(), :nth-last-of-type(), :last-child:first-of-type, :last-of-type, :only-child, :only-of-type, :empty и :not(). Определён синтаксис для :enabled, :disabled, :checked и :indeterminate, но без связанного семантического значения. Нет значительных изменений для псевдоклассов, определённых в CSS Level 2 (Revision 1). |
| CSS Level 2 (Revision 1) | Рекомендация | Определены :lang(), :first-child, :hover и :focus. Нет значительных изменений для псевдоклассов, определённых в CSS Level 1. |
| CSS Level 1 | Рекомендация | Определены :link, :visited и :active, но без связанного семантического значения. |
- Псевдоэлементы
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
Want to get more involved?
Learn how to contribute.
This page was last modified on by MDN contributors.
:active — CSS | MDN
Псевдокласс :active соответствует элементу в момент, когда он активируется пользователем. Он позволяет странице среагировать, когда элемент активируется. Взаимодействие элемента с мышью — это, как правило, время между нажатием и отпусканием пользователем кнопки мыши.
/* Любой элемент <a>, который будет активирован */
a:active {
color: red;
}
Псевдокласс :active чаще используется с элементами <a> и <button>, но может применяться и к другим элементам – например элементам форм.
Это свойство может быть переопределено любыми другими псевдоклассами, относящимся к ссылке, такими как :link, :hover и :visited, описанными в последующих правилах. Чтобы стилизировать нужные ссылки, вам нужно ставить правило :active после всех других правил, относящихся к ссылке, как определено правилом :link — :visited — :hover — :active.
Примечание: В системах с много-кнопочными мышами, CSS 3 указывает, что псевдокласс :active должен применяться только к первой кнопке; для праворуких мышей — это обычно самая левая кнопка.
Error: could not find syntax for this item
Активные ссылки
HTML
<p>Этот абзац содержит ссылку: <a href="#">Эта ссылка будет окрашена в красный, когда вы нажмёте на неё.</a> У абзаца фон станет серым при нажатии на него или на ссылку. </p>
CSS
a:link { color: blue; } /* Непосещённые ссылки */
a:visited { color: purple; } /* Посещённые ссылки */
a:hover { background: yellow; } /* Ссылки при наведении */
a:active { color: red; } /* Активные ссылки */
p:active { background: #eee; } /* Активные абзацы */
Результат
Активные элементы формы
HTML
<form> <label for="my-button">Моя кнопка: </label> <button type="button">Попробуй Нажать Меня или Мою подсказку!</button> </form>
CSS
form :active {
color: red;
}
form button {
background: white;
}
Result
| Спецификация | Статус | Комментарий |
|---|---|---|
| HTML Living Standard Определение ‘:active’ в этой спецификации. | Живой стандарт | |
| Selectors Level 4 Определение ‘:active’ в этой спецификации. | Рабочий черновик | Без изменений |
| Selectors Level 3 Определение ‘:active’ в этой спецификации. | Рекомендация | Без изменений |
| CSS Level 2 (Revision 1) Определение ‘:active’ в этой спецификации. | Рекомендация | Без изменений |
| CSS Level 1 Определение ‘:active’ в этой спецификации. | Рекомендация | Первоначальное определение |
BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
- Псевдоклассы, связанные с ссылками:
:link,:visitedи:hover.
Found a content problem with this page?
- Edit the page on GitHub.

- Report the content issue.
- View the source on GitHub.
Want to get more involved?
Learn how to contribute.
This page was last modified on by MDN contributors.
Псевдоклассы — CSS: каскадные таблицы стилей
Псевдокласс CSS — это ключевое слово, добавляемое к селектору, которое определяет особое состояние выбранных элементов. Например, псевдокласс :hover можно использовать для выбора кнопки, когда указатель пользователя наводит на кнопку, и затем для этой выбранной кнопки можно задать стиль.
/* Любая кнопка, над которой находится указатель пользователя */
кнопка:наведите {
цвет синий;
}
Псевдокласс состоит из двоеточия ( : ), за которым следует имя псевдокласса (например, :hover ). Функциональный псевдокласс также содержит пару скобок для определения аргументов (например, :dir() ).
Элемент, к которому прикреплен псевдокласс, определяется как элемент привязки (например, кнопка в случае button:hover ).
Псевдоклассы позволяют применить стиль к элементу не только по отношению к содержимому дерева документа, но и по отношению к внешним факторам, таким как история навигатора ( :visited , например), состояние его содержимого (например, :checked для определенных элементов формы) или положение мыши (например, , которое позволяет узнать, находится ли мышь над элементом или нет).
Примечание: В отличие от псевдоклассов псевдоэлементы могут использоваться для стилизации конкретной части элемента.
Эти псевдоклассы позволяют выбирать элементы на основе их состояний отображения.
-
:полноэкранный режим Соответствует элементу, который в данный момент находится в полноэкранном режиме.

-
:модальный Соответствует элементу, находящемуся в состоянии, в котором исключается любое взаимодействие с внешними элементами до тех пор, пока взаимодействие не будет отклонено.
-
:картинка в картинке Соответствует элементу, который в данный момент находится в режиме «картинка в картинке».
Эти псевдоклассы относятся к элементам формы и позволяют выбирать элементы на основе атрибутов HTML и состояния, в котором находится поле до и после взаимодействия.
-
:автозаполнение Соответствует, когда
было автоматически заполнено браузером.-
:включено Представляет элемент пользовательского интерфейса, находящийся во включенном состоянии.
-
:отключено Представляет элемент пользовательского интерфейса, который находится в отключенном состоянии.

-
:только для чтения Представляет любой элемент, который не может быть изменен пользователем.
-
: чтение-запись Представляет любой элемент, редактируемый пользователем.
-
: показан заполнитель Соответствует элементу ввода, отображающему текст-заполнитель. Например, он будет соответствовать
заполнительатрибут в элементахи.-
:по умолчанию -
Соответствует одному или нескольким элементам пользовательского интерфейса, которые используются по умолчанию среди набора элементов.
-
: проверено -
Соответствует включению таких элементов, как флажки и переключатели.
-
:неопределенный -
Соответствует элементам пользовательского интерфейса, когда они находятся в неопределенном состоянии.
-
:пусто -
Соответствует пустому элементу пользовательского ввода, содержащему пустую строку или другой нулевой ввод.
-
:действительный -
Соответствует элементу с допустимым содержимым. Например, элемент ввода с типом «электронная почта», который содержит правильно сформированный адрес электронной почты или пустое значение, если элемент управления не требуется.
-
:недействительный -
Соответствует элементу с недопустимым содержимым. Например, элемент ввода с типом «электронная почта» с введенным именем.
-
:в диапазоне -
Применяется к элементам с ограничениями диапазона. Например, ползунок управления, когда выбранное значение находится в допустимом диапазоне.
-
:вне диапазона -
Применяется к элементам с ограничениями диапазона.
Например, ползунок, когда выбранное значение выходит за пределы допустимого диапазона. -
:требуется -
Соответствует, когда требуется элемент формы.
-
:опционально -
Соответствует, когда элемент формы является необязательным.
-
:недействительный пользователь -
Представляет элемент с неправильным вводом, но только когда пользователь взаимодействовал с ним.
Эти псевдоклассы отражают язык документа и позволяют выбирать элементы на основе языка или направления письма.
-
:дир() -
Псевдокласс направленности выбирает элемент на основе его направленности, определенной языком документа.
-
:язык() -
Выберите элемент на основе языка его содержимого.
Эти псевдоклассы относятся к ссылкам и целевым элементам в текущем документе.
-
: любая ссылка -
Соответствует элементу, если элемент соответствует либо
:link, либо:visited. -
:ссылка -
Соответствует ссылкам, которые еще не посещались.
-
:посетили -
Соответствует посещенным ссылкам.
-
: локальная ссылка -
Соответствует ссылкам, абсолютный URL-адрес которых совпадает с целевым URL-адресом. Например, якорные ссылки на одну и ту же страницу.
-
: цель -
Соответствует элементу, который является целью URL-адреса документа.
-
: цель в пределах -
Соответствует элементам, которые являются целью URL-адреса документа, а также элементам, у которых есть потомок, являющийся целью URL-адреса документа.
-
:прицел -
Представляет элементы, которые являются ориентиром для сопоставления селекторов.
Эти псевдоклассы применяются к носителям, способным находиться в состоянии, в котором они могут быть описаны как воспроизводимые, например к видео.
-
:воспроизведение -
Представляет элемент мультимедиа, который может воспроизводиться во время воспроизведения этого элемента.
-
:пауза -
Представляет элемент мультимедиа, который может воспроизводиться, когда этот элемент приостановлен.
Эти псевдоклассы применяются при просмотре того, что имеет синхронизацию, например дорожки субтитров WebVTT.
-
:текущий -
Представляет элемент или предка отображаемого элемента.
-
:прошлое -
Представляет элемент, который полностью предшествует элементу
:current. -
:будущее -
Представляет элемент, который полностью следует за элементом
:current.
Эти псевдоклассы относятся к расположению элемента в дереве документа.
-
:корень -
Представляет элемент, являющийся корнем документа. В HTML это обычно элемент
. -
:пусто -
Представляет элемент без дочерних элементов, кроме пробельных символов.
-
:n-й ребенок -
Использует нотацию
An+Bдля выбора элементов из списка родственных элементов. -
:n-последний ребенок -
Использует нотацию
An+Bдля выбора элементов из списка одноуровневых элементов, считая в обратном порядке от конца списка. -
:первый ребенок -
Соответствует элементу, который является первым из своих братьев и сестер.
-
:последний ребенок -
Соответствует элементу, который является последним из своих братьев и сестер.
-
:единственный ребенок -
Соответствует элементу, у которого нет братьев и сестер. Например, элемент списка без других элементов списка в этом списке.
-
:n-й тип -
Использует нотацию
An+Bдля выбора элементов из списка одноуровневых элементов, которые соответствуют определенному типу из списка одноуровневых элементов. -
:n-последний тип -
Использует нотацию
An+Bдля выбора элементов из списка одноуровневых элементов, которые соответствуют определенному типу из списка одноуровневых элементов, считая в обратном порядке от конца списка. -
:первый в своем роде -
Соответствует элементу, который является первым из своих братьев и сестер, а также соответствует определенному селектору типа.
-
:последний тип -
Соответствует элементу, который является последним из его братьев и сестер, а также соответствует определенному селектору типа.
-
:только тип -
Соответствует элементу, у которого нет братьев и сестер выбранного селектора типа.
Эти псевдоклассы требуют некоторого взаимодействия со стороны пользователя для их применения, например удержания указателя мыши над элементом.
-
:наведение -
Соответствует, когда пользователь указывает элемент с помощью указывающего устройства, например, удерживая указатель мыши над элементом.
-
:активный -
Соответствует моменту активации элемента пользователем. Например, при нажатии на элемент.
-
:фокус -
Соответствует, когда элемент находится в фокусе.
-
: видимый фокус -
Соответствует, когда элемент имеет фокус, и пользовательский агент определяет, что элемент должен быть явно сфокусирован.
-
:фокус внутри -
Соответствует элементу, к которому применяется
:focus, а также любому элементу, у которого есть потомок, к которому:focusприменяется.
Эти псевдоклассы принимают в качестве параметра список селекторов или список прощающих селекторов.
-
:есть() -
Псевдокласс match-any соответствует любому элементу, который соответствует любому из селекторов в предоставленном списке. Список прощающий.
-
:не() -
Псевдокласс отрицания или отсутствия совпадений представляет любой элемент, не представленный его аргументом.
-
:где() -
Псевдокласс настройки специфичности соответствует любому элементу, который соответствует любому из селекторов в предоставленном списке, без добавления веса специфичности. Список прощающий.
-
:есть() -
Реляционный псевдокласс представляет элемент, если любой из относительных селекторов совпадает при привязке к присоединенному элементу.
селектор: псевдокласс {
стоимость имущества;
}
Как и обычные классы, в селекторе можно объединить столько псевдоклассов, сколько нужно.
Псевдоклассы, определенные набором спецификаций CSS, включают следующее:
A
-
:active -
: любая ссылка -
:автозаполнение
B
-
:пустоЭкспериментальный
C
-
:проверено -
: текущийЭкспериментальный
D
-
:по умолчанию -
: определено -
:дир()Экспериментальный -
:отключено
E
-
:пусто -
:включено
F
-
:первый -
:первый ребенок -
:первый тип -
:полноэкранный режим -
:будущееExpect behavior to change in the future.»> Экспериментальный -
:фокус -
: видимый фокус -
: фокус внутри
Н
-
:has()Экспериментальный -
: хост -
:хост() -
:хост-контекст()Экспериментальный -
:наведение
I
-
:неопределенный -
:в диапазоне -
: неверный -
:есть()
Л
-
:язык() -
:последний ребенок -
:последний тип -
:слева -
:ссылка -
: локальная ссылкаExpect behavior to change in the future.»> Экспериментальный
М
-
: модальный
N
-
:не() -
:n-й ребенок() -
:n-й столбец()Экспериментальный -
:n-последний-дочерний() -
:n-последний столбец()Экспериментальный -
:n-последний-типа() -
:n-й тип()
О
-
:только ребенок -
:только тип -
:опционально -
:вне диапазона
P
-
:прошлоеЭкспериментальный -
:картинка в картинке -
: показан заполнитель -
:пауза -
:игра
R
-
:только для чтения -
: чтение-запись -
: требуется -
:право -
:корень
S
-
:прицел -
:состояние()Expect behavior to change in the future.»> Экспериментальный
T
-
: цель -
: цель в пределахЭкспериментальный
U
-
: неверный пользовательЭкспериментальный
В
-
:действительно -
:посетили
Вт
-
:где()
| Specification |
|---|
| HTML Standard # pseudo-classes |
| Selectors Level 4 |
| CSS Basic User Interface Module Level 4 |
- Псевдоэлементы
Обнаружили проблему с содержанием этой страницы?
- Отредактируйте страницу на GitHub.
- Сообщить о проблеме с содержимым.
- Просмотрите исходный код на GitHub.
Хотите принять участие?
Узнайте, как внести свой вклад.
Последний раз эта страница была изменена участниками MDN.
Псевдоклассы и псевдоэлементы — Изучение веб-разработки
- Предыдущий
- Обзор: строительные блоки
- Следующий
Следующий набор селекторов, который мы рассмотрим, называется псевдоклассами и псевдоэлементами . Их большое количество, и они часто служат вполне конкретным целям. Как только вы узнаете, как их использовать, вы можете просмотреть список, чтобы увидеть, есть ли что-то, что подходит для задачи, которую вы пытаетесь выполнить. И снова соответствующая страница MDN для каждого селектора помогает объяснить поддержку браузера.
| Необходимые условия: | Базовая компьютерная грамотность, установлено базовое программное обеспечение, базовые знания работа с файлами, основы HTML (изучение Введение в HTML) и представление о том, как работает CSS (изучите CSS первые шаги). |
|---|---|
| Цель: | Чтобы узнать о селекторах псевдоклассов и псевдоэлементов. |
Псевдокласс — это селектор, который выбирает элементы, находящиеся в определенном состоянии, например. они являются первыми элементами своего типа или на них наводится указатель мыши. Они ведут себя так, как если бы вы применили класс к какой-то части документа, часто помогая вам сократить количество лишних классов в разметке и предоставляя более гибкий, удобный для сопровождения код.
Псевдоклассы — это ключевые слова, начинающиеся с двоеточия. Например, :hover — это псевдокласс.
Пример простого псевдокласса
Рассмотрим простой пример. Если бы мы хотели сделать первый абзац в статье больше и жирнее, мы могли бы добавить класс к этому абзацу, а затем добавить CSS к этому классу, как показано в первом примере ниже:
Однако это может раздражать в обслуживании — что, если новый абзац был добавлен в начало документа? Нам нужно переместить класс к новому абзацу. Вместо добавления класса мы могли бы использовать :first-child селектор псевдокласса — это будет всегда нацелено на первый дочерний элемент в статье, и нам больше не нужно будет редактировать HTML (в любом случае это не всегда возможно, возможно, из-за того, что он генерируется через CMS).
Все псевдоклассы ведут себя одинаково. Они нацелены на часть вашего документа, которая находится в определенном состоянии, как если бы вы добавили класс в свой HTML. Взгляните на другие примеры на MDN:
-
:последний ребенок -
:единственный ребенок -
: неверный
Примечание: Допустимо писать псевдоклассы и элементы без предшествующего им селектора элемента.
В приведенном выше примере вы можете написать :first-child , и правило будет применяться к любому элементу , который является первым дочерним элементом элемента , а не только первого дочернего элемента абзаца — :first-child. эквивалентно *: первый ребенок . Однако обычно вам нужен больший контроль, поэтому вам нужно быть более конкретным.
Псевдоклассы действий пользователя
Некоторые псевдоклассы применяются только тогда, когда пользователь каким-либо образом взаимодействует с документом. Эти псевдоклассы user-action , иногда называемые динамическими псевдоклассами , действуют так, как если бы класс был добавлен к элементу, когда пользователь взаимодействует с ним. Примеры:
-
:hover— упомянуто выше; это применимо только в том случае, если пользователь наводит указатель на элемент, обычно ссылку. -
:focus— применяется только в том случае, если пользователь фокусирует элемент, щелкая или используя элементы управления с клавиатуры.
Псевдоэлементы ведут себя аналогичным образом. Однако они действуют так, как если бы вы добавили в разметку совершенно новый элемент HTML, а не применяли класс к существующим элементам.
Псевдоэлементы начинаются с двойного двоеточия :: . ::before — пример псевдоэлемента.
Примечание: Некоторые ранние псевдоэлементы использовали синтаксис с одним двоеточием, поэтому вы можете иногда видеть это в коде или примерах. Современные браузеры поддерживают ранние псевдоэлементы с синтаксисом с одним или двумя двоеточиями для обратной совместимости.
Например, если вы хотите выделить первую строку абзаца, вы можете поместить ее в элемент и использовать селектор элементов; однако это не удастся, если количество слов, которые вы обернули, было длиннее или короче, чем ширина родительского элемента. Поскольку мы, как правило, не знаем, сколько слов поместится в строке — поскольку это изменится, если изменится ширина экрана или размер шрифта — невозможно надежно сделать это, добавив HTML.
Селектор псевдоэлементов ::first-line надежно сделает это за вас — если количество слов увеличится или уменьшится, он все равно выберет только первую строку.
Это действует так, как если бы был волшебным образом обернут вокруг этой первой отформатированной строки и обновлялся каждый раз, когда длина строки менялась.
Вы можете видеть, что это выделяет первую строку обоих абзацев.
Если вы хотите сделать первую строку первого абзаца полужирной, вы можете объединить селекторы :first-child и ::first-line вместе. Попробуйте отредактировать предыдущий живой пример, чтобы он использовал следующий CSS. Мы говорим, что хотим выбрать первую строку из первых 9Элемент 0007
, который находится внутри элемента .
статья p:first-child::first-line {
размер шрифта: 120%;
вес шрифта: полужирный;
}
Существует несколько специальных псевдоэлементов, которые используются вместе со свойством content для вставки содержимого в документ с помощью CSS.
Вы можете использовать их для вставки строки текста, например, в живом примере ниже. Попробуйте изменить текстовое значение свойства content и посмотрите, как оно изменится в выходных данных. Вы также можете изменить ::before псевдоэлемента на ::after и увидеть текст, вставленный в конец элемента, а не в начало.
Вставка строк текста из CSS — это не то, что мы делаем очень часто в Интернете, поскольку этот текст недоступен для некоторых программ чтения с экрана, и кому-то может быть сложно его найти и отредактировать в будущем.
Более правильное использование этих псевдоэлементов — вставить значок, например маленькую стрелку, добавленную в приведенном ниже примере, которая является визуальным индикатором, который мы не хотели бы считывать программой чтения с экрана:
Эти псевдоэлементы также часто используются для вставки пустой строки, которая затем может быть оформлена как любой элемент на странице.
В следующем примере мы добавили пустую строку, используя псевдоэлемент ::before .
Мы установили для него значение display: block , чтобы мы могли стилизовать его с помощью ширины и высоты. Затем мы используем CSS, чтобы стилизовать его так же, как и любой элемент. Вы можете поиграть с CSS и изменить его внешний вид и поведение.
Применение 9Псевдоэлементы 0007 ::before и ::after вместе со свойством content называются в CSS «сгенерированным содержимым», и вы часто будете видеть, как этот метод используется для различных задач. Отличным примером является сайт CSS Arrow Please, который поможет вам создать стрелку с помощью CSS. Посмотрите на CSS, когда вы создаете свою стрелку, и вы увидите используемые псевдоэлементы ::before и ::after . Всякий раз, когда вы видите эти селекторы, смотрите на содержимое , чтобы увидеть, что добавляется к элементу HTML.
В этой статье мы представили псевдоклассы и псевдоэлементы CSS, которые являются специальными типами селекторов.


Определены
Определён синтаксис для



Например, ползунок, когда выбранное значение выходит за пределы допустимого диапазона.