:nth-child — CSS | MDN
CSS псевдокласс :nth-child() находит один или более элементов, основываясь на их позиции среди группы соседних элементов.
/* Выбирает каждый четвёртый элемент
среди любой группы соседних элементов */
:nth-child(4n) {
color: lime;
}
Псевдокласс nth-child указывается с единственным аргументом, описывающим паттерн для выбирания элементов.
Ключевые слова
oddОписывает элементы среди группы соседних с нечётными номерами 1, 3, 5, и т. д.
evenОписывает элементы среди группы соседних с чётными номерами 2, 4, 6, и т. д.
Функциональная запись
<An+B>Описывает элементы среди группы соседних с номерами, соответствующими паттерну
An+B(для каждого целого числа n >= 0). Нумерация элементов начинается с единицы. ЗначенияAиBдолжны бытьs. <integer>
Формальный синтаксис
Error: could not find syntax for this item
Примеры селекторов
tr:nth-child(odd)илиtr:nth-child(2n+1)Описывает нечётные строки HTML таблицы: 1, 3, 5, и т. д.
tr:nth-child(even)ortr:nth-child(2n)Описывает чётные строки HTML таблицы: 2, 4, 6, и т. д.
:nth-child(7)Описывает седьмой элемент.
:nth-child(5n)Описывает элементы с номерами 5, 10, 15, и т. д.
:nth-child(3n+4)Описывает элементы с номерами 4, 7, 10, 13, и т. д.
:nth-child(-n+3)Описывает первые три элемента среди группы соседних элементов.
p:nth-child(n)Описывает каждый элемент
Эквивалентно простому селектору<p>среди группы соседних элементов.
p.p:nth-child(1)илиp:nth-child(0n+1)Описывает каждый элемент
<p>, являющийся первым среди группы соседних элементов. Эквивалентно селектору:first-child.
Подробный пример
HTML
<h4><code>span:nth-child(2n+1)</code>, БЕЗ элемента <code><em">></code> в группе элементов-потомков.</h4> <p>Элементы 1, 3, 5 и 7 будут выбраны.</p> <div> <span>Span 1!</span> <span>Span 2</span> <span>Span 3!</span> <span>Span 4</span> <span>Span 5!</span> <span>Span 6</span> <span>Span 7!</span> </div> <br> <h4><code>span:nth-child(2n+1)</code>, С элементом <code><em">></code> в группе элементов-потомков.</h4> <p>Элементы 1, 5 и 7 будут выбраны.<br> 3 используется в подсчёте потому что это элемент-потомок, но он не выбран потому что он не <code><span">></code>.</p> <div> <span>Span!</span> <span>Span</span> <em>Это `em`.</em> <span>Span</span> <span>Span!</span> <span>Span</span> <span>Span!</span> <span>Span</span> </div> <br> <h4><code>span:nth-of-type(2n+1)</code>, С элементом <code><em">></code> в группе элементов-потомков.</h4> <p>Элементы 1, 4, 6 и 8 будут выбраны.<br> 3 не используется в подсчёте и не выбран, потому что это <code><em">></code>, но не <code><span">></code>, а <code>nth-of-type</code> выбирает только потомков этого типа. Элемент <code><em">></code> полностью пропускается и игнорируется. </p> <div> <span>Span!</span> <span>Span</span> <em>Это `em`.</em> <span>Span!</span> <span>Span</span> <span>Span!</span> <span>Span</span> <span>Span!</span> </div>
CSS
html {
font-family: sans-serif;
}
span,
div em {
padding: 5px;
border: 1px solid green;
display: inline-block;
margin-bottom: 3px;
}
.first span:nth-child(2n+1),
.second span:nth-child(2n+1),
.third span:nth-of-type(2n+1) {
background-color: lime;
}
Результат
| Specification |
|---|
| Selectors Level 4 # nth-child-pseudo |
BCD tables only load in the browser
with JavaScript enabled. Enable JavaScript to view data.:nth-of-type,:nth-last-child
Last modified: 000Z»>7 нояб. 2022 г., by MDN contributors
Псевдоклассы, псевдоэлементы — Изучение веб-разработки
- Назад
- Обзор: Building blocks
- Далее
Следующий набор селекторов, который мы рассмотрим, относится к псевдоклассам и псевдоэлементам. Их очень много, и они часто служат довольно специфическим целям. После того как вы узнаете порядок их использования, просмотрите список — не найдётся ли в нём что-либо, что поможет решить стоящую перед вами задачу. Кроме того, будет полезным заглянуть на соответствующую каждому селектору страницу MDN, чтобы прояснить, как его обрабатывает браузер.
| Необходимые условия: | Базовая компьютерная грамотность, установка базового ПО, базовые знания о работе с файлами, основы HTML (изучите Введение в HTML) и понимание работы CSS (изучите Введение в CSS.) |
|---|---|
| Цель: | Узнать о селекторах псевдокласса и псевдоэлемента.![]() |
Псевдокласс — это селектор, который выбирает элементы, находящиеся в специфическом состоянии, например, они являются первым элементом своего типа, или на них наведён указатель мыши. Они обычно действуют так, как если бы вы применили класс к какой-то части вашего документа, что часто помогает сократить избыточные классы в разметке и даёт более гибкий, удобный в поддержке код.
Псевдоклассы — это ключевые слова, которые начинаются с двоеточия:
:pseudo-class-name
Простой пример псевдокласса
Давайте рассмотрим простой пример. Если бы мы хотели сделать шрифт первого абзаца статьи более крупным и жирным, мы могли бы добавить класс к этому абзацу, а затем добавить CSS к этому классу, как показано в первом примере ниже:
Однако поддержка может оказаться утомительной — что если новый абзац будет добавлен в верхнюю часть документа? Тогда нам нужно будет передвинуть класс к новому абзацу. Вместо добавления класса мы могли бы использовать селектор псевдокласса :first-child — он всегда будет нацелен на первый дочерний элемент в статье, и нам больше не нужно будет редактировать HTML (к тому же это не всегда возможно, например, в случае если он генерируется CMS.
)
Все псевдоклассы ведут себя подобным образом. Они нацелены на какой-то фрагмент вашего документа, находящийся в определённом состоянии, и ведут себя так, как если бы вы добавили класс в свой HTML. Рассмотрим некоторые другие примеры в MDN:
:last-child:only-child:invalid
Примечание: : Правильно писать псевдоклассы и элементы без какого бы то ни было предшествующего им селектора элемента. В примере выше вы могли бы написать :first-child и правило было бы применено к любому элементу, оказавшемуся первым дочерним для <article>, не только к первому дочернему абзацу — :first-child равнозначно *:first-child. Однако обычно вы хотите большего контроля, поэтому вам нужен более специфичный селектор.
Псевдоклассы пользовательского действия
Некоторые псевдоклассы применяются только тогда, когда пользователь некоторым образом взаимодействует с документом.
:hover— упоминался выше; он применяется только в том случае, если пользователь наводит указатель мыши на элемент, обычно на ссылку.:focus— применяется только в том случае, если пользователь фокусируется на элементе, используя управление с клавиатуры.
Псевдоэлементы ведут себя сходным образом, однако они действуют так, как если бы вы добавили в разметку целый новый HTML-элемент, а не применили класс к существующим элементам. Псевдоэлементы начинаются с двойного двоеточия ::.
::pseudo-element-name
Примечание: Некоторые ранние псевдоэлементы использовали синтаксис одинарного двоеточия, которое вы можете иногда видеть в коде или примерах. Современные браузеры поддерживают ранние псевдоэлементы с одинарным или двойным двоеточием синтаксиса для обратной совместимости.
Например, если вы хотите выбрать первую строку абзаца, вы могли бы обернуть её в <span> и использовать селектор элемента; однако это может не сработать, если количество слов, которые вы обернули, будет больше или меньше ширины родительского элемента. Поскольку мы, как правило, не знаем, сколько слов поместится в строке — т.к. их количество меняется, если меняется ширина экрана или размер шрифта — то надёжного решения при помощи HTML нет.
Селектор псевдоэлемента ::first-line сделает это наверняка — если количество слов увеличивается или уменьшается, он всё равно будет выбирать только первую строку.
Он действует так, как если бы <span>
Вы можете видеть, что селектор выбирает первую строку обоих абзацев.
Если вы хотите сделать шрифт первой строки первого абзаца жирным, вы можете связать вместе селекторы :first-child и ::first-line.
Попробуйте отредактировать предыдущий живой пример, чтобы использовалась следующая CSS. Мы говорим, что хотим выбрать первую строку первого элемента <p>, который находится внутри элемента <article>.
article p:first-child::first-line {
font-size: 120%;
font-weight: bold;
}
Существует пара специальных псевдоэлементов, которые используются вместе со свойством content для вставки содержимого в документ с помощью CSS.
Вы можете использовать их для вставки строки текста, как в приведённом ниже живом примере. Попробуйте изменить текстовое значение свойства content и вы увидите, как изменится результат. Можете также изменить псевдоэлемент ::before на ::after и увидите, что текст вставлен в конце элемента, а не в начале.
Однако вставка строк текста из CSS в реальности происходит не слишком часто, поскольку этот текст недоступен для некоторых экранных дикторов и его будет трудно найти и отредактировать в будущем.
Более корректным использованием этих псевдоэлементов является вставка значка, например маленькой стрелки, добавленной в приведённом ниже примере, которая является визуальным указателем, не предназначенным для зачитывания с помощью экранного диктора:
Эти псевдоэлементы также часто используются для вставки пустой строки, которая затем может быть стилизована так же, как и любой элемент на странице.
В следующем примере мы добавили пустую строку, используя псевдоэлемент ::before. Мы установили display: block, чтобы стилизовать его по ширине и высоте. Затем мы используем CSS, чтобы стилизовать его так же, как и любой другой элемент. Вы можете поиграть с CSS и изменить его внешний вид и поведение.
Использование псевдоэлементов ::before и ::after вместе со свойством content в CSS называется «генерируемым контентом» в CSS, и вы часто будете видеть, как этот метод используется для различных задач. Отличным примером является сайт CSS Arrow Please, который помогает вам генерировать стрелку с помощью CSS.
Посмотрите на CSS, когда вы создадите свою стрелку, и вы увидите использование псевдо-элементов ::before и ::after. Всякий раз, когда вы будете видеть эти селекторы, смотрите на свойство content, чтобы увидеть, что добавляется в документ..
Существует большое количество псевдоклассов и псевдоэлементов, и полезно иметь список, к которому можно обращаться. Ниже приведены таблицы, в которых они перечислены, со ссылками на их справочные страницы в MDN. Используйте эти таблицы как справочник, чтобы видеть массив доступных вам средств для нацеливания на элементы.
Псевдоклассы
Псевдоэлементы
- Назад
- Обзор: Building blocks
- Далее
- Каскад и наследование
- Селекторы CSS
- Селекторы типа, класса и ID
- Селекторы атрибута
- Псевдоклассы и псевдоэлементы
- Комбинаторы
- Модель коробки
- Фон и границы
- Обработка разных направлений текста
- Переполнение содержимого
- Значения и единицы измерения
- Изменение размеров в CSS
- Элементы изображений, форм и медиа-элементы
- Стилизация таблиц
- Отладка CSS
- Организация вашей CSS
Last modified: 000Z»>7 нояб. 2022 г., by MDN contributors
псевдоклассов — CSS: Каскадные таблицы стилей
Псевдокласс CSS — это ключевое слово, добавляемое к селектору, которое определяет особое состояние выбранных элементов. Например, псевдокласс :hover можно использовать для выбора кнопки, когда указатель пользователя наводит на кнопку, и затем для этой выбранной кнопки можно задать стиль.
/* Любая кнопка, над которой находится указатель пользователя */
кнопка:наведите {
цвет синий;
}
Псевдокласс состоит из двоеточия ( : ), за которым следует имя псевдокласса (например, :hover ). Функциональный псевдокласс также содержит пару скобок для определения аргументов (например, :dir() ). Элемент, к которому прикреплен псевдокласс, определяется как элемент привязки (например, кнопка в случае button:hover ).
Псевдоклассы позволяют применить стиль к элементу не только по отношению к содержимому дерева документа, но и по отношению к внешним факторам, таким как история навигатора ( :visited , например), состояние его содержимого (например, :checked для определенных элементов формы) или положение мыши (например, :hover , которое позволяет узнать, находится ли мышь над элементом или нет).
Примечание: В отличие от псевдоклассов псевдоэлементы могут использоваться для стилизации конкретной части элемента.
Эти псевдоклассы позволяют выбирать элементы на основе их состояний отображения.
-
:полноэкранный режим Соответствует элементу, который в данный момент находится в полноэкранном режиме.
-
:модальный Соответствует элементу, находящемуся в состоянии, в котором исключается любое взаимодействие с внешними элементами до тех пор, пока взаимодействие не будет отклонено.
-
:картинка в картинке Соответствует элементу, который в данный момент находится в режиме «картинка в картинке».
Эти псевдоклассы относятся к элементам формы и позволяют выбирать элементы на основе атрибутов 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
-
:проверено -
: текущийExpect behavior to change in the future.»> Экспериментальный
Д
-
:по умолчанию -
: определено -
:дир()Экспериментальный -
:отключено
E
-
:пусто -
:включено
F
-
:первый -
:первый ребенок -
: первый в своем роде -
:полноэкранный режим -
:будущееЭкспериментальный -
:фокус -
: видимый фокус -
: фокус внутри
Н
-
:has()Expect behavior to change in the future.»> Экспериментальный -
: хост -
:хост() -
:хост-контекст()Экспериментальный -
:наведение
I
-
:неопределенный -
:в диапазоне -
: неверный -
:есть()
Л
-
:язык() -
:последний ребенок -
:последний тип -
:слева -
:ссылка -
: локальная ссылкаЭкспериментальный
М
-
: модальный
№
-
:не() -
:n-й ребенок() -
:n-й столбец()Expect behavior to change in the future.»> Экспериментальный -
:n-последний-дочерний() -
:n-последний столбец()Экспериментальный -
:n-последний-типа() -
:n-й тип()
O
-
:только ребенок -
:только тип -
:опционально -
:вне диапазона
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 |
- Pseudo-elements
Последнее изменение: 000Z»> 11 октября 2022 г. , авторы MDN
:checked — CSS: Каскадные таблицы стилей. , или
option ( in a ), который проверяется или переключается в состояние на . Пользователь может активировать это состояние, проверив/выбрав элемент, или отключить его, сняв флажок/отменив выбор элемента.
Примечание: Поскольку браузеры часто рассматривают как заменяемые элементы, степень, в которой они могут быть стилизованы с помощью псевдокласса :checked , варьируется от браузера к браузеру.
:проверено
Базовый пример
HTML
<дел>




</p>
<div>
<span>Span!</span>
<span>Span</span>
<em>Это `em`.</em>
<span>Span!</span>
<span>Span</span>
<span>Span!</span>
<span>Span</span>
<span>Span!</span>
</div>

Например, якорные ссылки на одну и ту же страницу.
Например, при нажатии на элемент.