Псевдоклассы — 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, которые являются специальными типами селекторов.