CSS-псевдоклассы nth-child и nth-of-type | 8HOST.COM
25 февраля, 2022 11:50 дп 31 views | Комментариев нетDevelopment | Amber | Комментировать запись
В CSS есть несколько псевдоклассов, которые помогут вам быстро оформить ваше приложение. Наличие большого количества опций может быть как плюсом, так и минусом: не всегда сразу понятно, какой псевдокласс использовать и что он на самом деле делает. В данном мануале мы подробно рассмотрим CSS-псевдоклассы nth-child и nth-of-type, чтобы лучше понять, когда их использовать и в чем на самом деле разница.
CSS-псевдоклассы nth-child и nth-of-type интересно изучать именно в сравнении с другими типами псевдоклассов, поскольку они выбирают элементы на основе их положения в DOM. В то время как некоторые псевдоклассы выбирают конкретное состояние элемента (например, к таким относятся hover, active, target), nth-child и nth-of-type больше связаны со структурой разметки.
Требования
- Общие навыки работы с HTML5. Если вам нужно освежить свои знания или вы хотите получить всесторонний обзор языка разметки HTML5, изучите серию руководств «Как создать веб-сайт в HTML».
- Общие навыки работы с CSS.
Создание тестового HTML
Чтобы понять разницу между nth-child и nth-of-type, давайте сначала создадим наш тестовый HTML, чтобы на его примере увидеть разницу.
Допустим, у нас есть страница, а на этой странице есть раздел, который состоит из элементов заголовка (<h2>, <h4>) и абзаца (<p>).
<article> <h2>Here's a Header</h2> <p>I'm a paragraph with all kinds of information.</p> <p>Let's add another paragraph for fun.</p> <p>yadda yadda yadda</p> <p>blah blah blah</p> <p>yadda yadda yadda</p> <h4>Here's a Subheader</h4> <p>blah blah blah</p> <p>And maybe just one more.</p> </article>
Данный HTML выглядит так:
I’m a paragraph with all kinds of information.
Let’s add another paragraph for fun.
yadda yadda yadda
blah blah blah
yadda yadda yadda
Here’s a Subheader
blah blah blah
And maybe just one more.
По итогу у нас есть родительский элемент <article> и девять дочерних элементов: один тег <h2>, один <h4> и семь тегов <p>.
Синтаксис nth-child и nth-of-type
Есть несколько вариантов того, какие значения вы можете передать псевдоклассам nth-child и nth-of-type. Давайте посмотрим, как это делается.
Примечание: В примерах ниже используется nth-child, но его можно заменить на nth-of-type.
- :nth-child(2n+3): этот параметр требует некоторых вычислений. Цифры могут быть любыми на ваш выбор; а n будет меняться. Данный псевдокласс возьмет выбранные вами элементы, для начала установит в n значение 0 и начнет сложение из этой точки.
- :nth-child(odd/even): передавая псевдоклассу строки odd и even (нечетные или четные), вы можете выбрать доступные нечетные и четные элементы.
- :nth-child(3n): также можно передать число с переменной n, которая выберет интервал появления заданного элемента. Например, если передано 3, будут выбраны третий, шестой, девятый и элементы т. д.
- :nth-child(3): если вы просто передадите число (без n), псевдокласс выберет именно этот элемент из DOM. При передаче 3 будет выбран только третий элемент.
Использование CSS-псевдокласса nth-child
Псевдокласс nth-child имеет два важных компонента, которые следует учитывать:
- выбранные элементы, к которым будет применен псевдокласс.
- переданное псевдоклассу значение.
Приступим к созданию таблицы стилей CSS для приведенного выше примера HTML. Мы можем выбрать элементы абзаца и сделать цвет шрифта темно-бордовым вот так:
article p { color: maroon; }
Допустим, мы хотим, чтобы все остальные абзацы были желтого цвета. Мы можем использовать псевдокласс nth-child, чтобы применить новый цвет только к тем дочерним элементам, которые являются абзацами.
article p:nth-child(odd) { color: goldenrod; }
Теперь абзацы изменили свой цвет. Вы заметили, что произошло? Цвета чередуются: сначала идет бордовый цвет, а затем желтый. Давайте посмотрим, почему это произошло.
Определение элементов, выбранных с помощью nth-child
В приведенном выше примере абзацы, соответствующие стилю p:nth-child(odd), должны отвечать следующим требованиям:
- они должны быть нечетными дочерними элементами родительского элемента
- они должны быть элементами абзаца
Четность и нечетность элемента определяется независимо от типа.
Абзацы, к которым применен желтый цвет, являются нечетными дочерними элементами абзаца (<p>). Это объясняет, почему абзац после подзаголовка по умолчанию имеет темно-бордовый цвет — на самом деле это «четный» дочерний элемент (нечетный достался заголовку, но такие элементы не отвечают выборке псевдокласса).
Использование CSS-псевдокласса nth-of-type
Давайте воспользуемся нашим предыдущим примером, но вместо этого применим nth-of-type.
<article> <h2>Here's a Header</h2> <p>I'm a paragraph with all kinds of information. </p> <p>Let's add another paragraph for fun.</p> <p>yadda yadda yadda</p> <p>blah blah blah</p> <p>yadda yadda yadda</p> <h4>Here's a Subheader</h4> <p>blah blah blah</p> <p>And maybe just one more.</p> </article>
Стили:
article p { color: maroon; } article p:nth-of-type(odd) { color: goldenrod; }
Цветом по умолчанию по-прежнему остается темно-бордовый, но теперь мы выбираем только нечетные элементы абзаца.
Теперь стили применяются, если элемент соответствует следующим требованиям:
- Он представляет собой абзац, родительский элемент которого – article.
- Он является нечетным элементом.
Если мы посмотрим на это внимательнее, станет немного яснее, как этот псевдокласс выбирает нужные элементы.
Заголовки (<h2>, <h4>) вообще не учитываются псвдоклассом nth-of-type, потому что он выбирает конкретно по типу элемента. В данном случае его интересуют только элементы <p>.
В конечном итоге выбор между псевдоклассами nth-child и nth-of-type будет зависеть от того, какого стиля вы хотите достичь.
Как правило, если нужно выбрать какой-то интервал независимо от типа элемента, используется nth-child. Однако если нужно выбрать только определенный тип, используется nth-of-type.
Заключение
Селекторы nth-child и nth-of-type отлично поддерживаются браузерами. Проверьте nth-child и nth-of-type на CanIUse.com, чтобы узнать больше.
Читайте также: Что такое специфичность в CSS
Tags: CSS, HTMLnth-child (n), введение, связанное с левым полем
Теги: css3 html5
У меня небольшой интерфейс, и я все еще учусь. Ввиду постоянной необходимости выяснять отношения в процессе изучения интерфейса, я беру платформу CSDN, чтобы записывать атрибуты, которые я изучаю каждый день, учусь вместе и вместе добиваюсь прогресса. Рецензентами считаются одноклассники, которые учились. (Пишу блог впервые, терпи меня)
- position:fixed
используется для фиксации положения, например
.j_header{ height: 40px; width: 100%; / * Подлежит закреплению вверху * / position: fixed; }
- nth-child
Вот только некоторые из них, с которыми я столкнулся сегодня, можно большенажмите здесь, чтобы просмотреть
:nth-child(n) | Селектор соответствует n-му дочернему элементу в родительском элементе, и нет ограничений на тип элемента. |
---|---|
p:nth-child(1) | Элементы тега p |
li:nth-child(3n) | Кратное 3, например, третья метка li, шестая метка li |
li:last-child | Последний тег li |
p:nth-child(n+2) | За исключением первого тега p |
пример:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <title></title> <style type="text/css"> . box { width: 300px; height:300px; background-color: pink; } p:nth-child(1) { background-color: red; } p:nth-child(3n) { background-color: green; } p:last-child { background-color: yellow; } </style> </head> <body> <div> <p> Мне 1 год </p> <p> Мне 2 года </p> <p> Мне 3 года </p> <p> Мне 4 года </p> <p> Мне 5 лет </p> <p> Мне 6 лет </p> <p> Мне 7 лет </p> </div> </body> </html>
Прикрепите рендеринг:
- margin-left
в основном сочетается с позиционированием, вот эффект центрирования:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <title></title> <style type="text/css"> .box { width: 200px; height: 200px; background-color: pink; position: relative; } . box .banner_index { position: absolute; bottom: 10px; left: 50%; margin-left: -100px; } .box .banner_index li { float: left; width: 6px; height: 6px; border-radius: 50%; border: 1px solid white; margin-left: 5px; display: block; } .box .banner_index li.current { background-color: white; } </style> </head> <body> <div> <ul> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> </ul> </div> </body> </html>
[Примечание] Здесь следует отметить одну вещь: если между li и .current есть пробел, то это селектор-потомок. Отсутствие пробела здесь относится к стилю, в котором тег li имеет категорию .current.
Интеллектуальная рекомендация
Компонент шагов ANTD+Vue добавляет пользовательский контент в стиле к панели шагов (ниже)
Если значок, указанный в компоненте Steps в ANTD, не может соответствовать нашим требованиям, вам необходимо использовать пользовательскую картинку для его реализации. Например, реализован следующий п…
Метод Java тяжелая нагрузка и механизм передачи значений
Метод перегрузка концепция: В одном и том же классе разрешен тот же метод имени, до тех пор, пока их параметры или типы параметров различны. Особенности тяжелой нагрузки: Два из одинаковых различий: о…
Разработчик общий сайт
http://www.hollischuang.com/archives/1459?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io В качестве разработчика Java вы часто должны иметь дело с широким спектром инструме…
P4 коммутатор сетевой эксперимент
В настоящее время в моей лаборатории есть коммутатор Edge-core P4, модель которогоWedge 100BF-32XКоммутатор имеет в общей сложности 32 порта 100G, но он может обмениваться данными с сервером 40G через…
gulp-webp генерирует изображения webP в формате .jpg.webp / .png.webp
использоватьgulp-webp Создавать изображения jpg / png в формате webP очень просто, Исходное изображение — 1. jpg, все сгенерированные — 1.webp Лучше напрямую использовать less / sass. 1.jpg.webp прост …
Вам также может понравиться
2018-01-31
проблема: Ошибка запроса ресурса (bg: ресурс, который не нужно запрашивать) решение: 1) Найдите возможные связанные функциональные модули 2) Проверьте, связано ли с запросом место, где активно запраши…
44 Power Query-специфичный метод просмотра функций
Поделитесь учебником по искусственному интеллекту моего учителя! Нулевой фундамент, легко понять!http://blog.csdn.net/jiangjunshow Вы также можете перепечатать эту статью. Делитесь знаниями, приносите…
Используйте основную работу массива для достижения инициализации, значения назначения, значения массива и операции позиционирования массива
Используйте основную работу массива для достижения инициализации, значения назначения, значения массива и операции позиционирования массива Реализация: Определите двухмерный массив B, инициализируйте …
Ошибка HTTP MAPP 404.
0 — не найдено решениеИспользуйте MAMP в Windows New E: \ MAPP \ MAMP \ MAMP \ MAMP \ MAMP \ MAMP \ HTDOCS \ First \ maint.php-файл, используйте сервер Apache и MySQL, а затем открытьhttp://localhost/first/index.phpПоявитс…
Каковы сходства между открытым исходным кодом и кулинарией? Linux Китай
Есть ли хороший способ продвигать дух открытого исходного кода без написания кода? Вот идея: «Кафе с открытым исходным кодом». Флориан Эффенбергер Для полезных ссылок на оригинальный текст…
© 2020-2022 All rights reserved by russianblogs.com
child() — Псевдокласс CSS :nth-child()сопоставляет элементы на основе их положения среди
Псевдокласс CSS :nth-child()
сопоставляет элементы на основе их положения среди группы братьев и сестер.
/ * Выбирает второй элемент <li> в списке * / li:nth-child(2) { color: lime; } / * Выбирает каждый четвертый элемент среди любой группы братьев и сестер * / :nth-child(4n) { color: lime; }
Syntax
:nth-child()
принимает единственный аргумент, который описывает шаблон для сопоставления индексов элементов в списке братьев и сестер. Индексы элементов начинаются с 1.
Keyword values
odd
Представляет элементы,числовое положение которых в серии братьев и сестер является нечетным:1,3,5 и т.д.
even
Представляет элементы,числовое положение которых в серии братьев и сестер равномерно:2,4,6 и т.д.
Functional notation
<An+B>
Представляет элементы в списке, индексы которых совпадают с индексами, найденными в пользовательском шаблоне чисел, определяемом
An+B
, где:-
A
— целочисленный размер шага, -
B
— целочисленное смещение, -
n
— все неотрицательные целые числа, начиная с 0.
Его можно прочитать как элемент списка An + B.
-
Formal syntax
:nth-child( <nth> [ of <complex-selector-list> ]? )where <nth> = <an-plus-b> | even | odd<complex-selector-list> = <complex-selector>#where <complex-selector> = <compound-selector> [ <combinator>? <compound-selector> ]*where <compound-selector> = [ <type-selector>? <subclass-selector>* [ <pseudo-element-selector> <pseudo-class-selector>* ]* ]!<combinator> = '>' | '+' | '~' | [ '||' ]where <type-selector> = <wq-name> | <ns-prefix>? '*'<subclass-selector> = <id-selector> | <class-selector> | <attribute-selector> | <pseudo-class-selector><pseudo-element-selector> = ':' <pseudo-class-selector><pseudo-class-selector> = ':' <ident-token> | ':' <function-token> <any-value> ')'where <wq-name> = <ns-prefix>? <ident-token><ns-prefix> = [ <ident-token> | '*' ]? | <id-selector> = <hash-token><class-selector> = '. ' | '$' | '*' ]? '='<attr-modifier> = i | s
Examples
Example selectors
-
tr:nth-child(odd)
илиtr:nth-child(2n+1)
Представляет нечетные строки таблицы HTML:1,3,5 и т.д.
-
tr:nth-child(even)
илиtr:nth-child(2n)
Представляет четные строки таблицы HTML:2,4,6 и т.д.
:nth-child(7)
Представляет седьмой элемент.
:nth-child(5n)
Представляет элементы 5 [=5×1], 10 [=5×2], 15 [=5×3] и т . д. Первым в результате формулы будет возвращен 0 [=5×0], в результате чего несоответствие, так как элементы индексируются с 1, тогда как
n
начинается с 0. Сначала это может показаться странным, но имеет больше смысла, когда частьB
формулы>0
, как в следующем примере.:nth-child(n+7)
Представляет седьмой и все следующие элементы: 7 [= 0 + 7], 8 [= 1 + 7], 9 [= 2 + 7] и т. Д.
:nth-child(3n+4)
Представляет элементы 4 [=(3×0)+4], 7 [=(3×1)+4], 10 [=(3×2)+4], 13 [=(3×3)+4], и т.п.
:nth-child(-n+3)
Представляет первые три элемента.[=-0+3,-1+3,-2+3]
p:nth-child(n)
Представляет каждый элемент
<p>
в группе братьев и сестер. Это выбирает те же элементы, что и простойp
— селектор (хотя и с более высокой специфичностью).-
p:nth-child(1)
илиp:nth-child(0n+1)
Представляет каждый
<p>
, который является первым элементом в группе братьев и сестер. Это то же самое, что и селектор:first-child
(и имеет ту же специфику).p:nth-child(n+8):nth-child(-n+15)
Представляет восьмой-пятнадцатый
<p>
элементы группы родных братьев.
Detailed example
HTML
<h4><code>span:nth-child(2n+1)</code>, WITHOUT an <code><em></code> among the child elements.</h4> <p>Children 1, 3, 5, and 7 are selected.</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>, WITH an <code><em></code> among the child elements.</h4> <p>Children 1, 5, and 7 are selected.<br> 3 is used in the counting because it is a child, but it isn't selected because it isn't a <code><span></code>.</p> <div> <span>Span!</span> <span>Span</span> <em>This is an `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>, WITH an <code><em></code> among the child elements.</h4> <p>Children 1, 4, 6, and 8 are selected.<br> 3 isn't used in the counting or selected because it is an <code><em></code>, not a <code><span></code>, and <code>nth-of-type</code> only selects children of that type. The <code><em></code> is completely skipped over and ignored.</p> <div> <span>Span!</span> <span>Span</span> <em>This is an `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; }
Result
© 2005–2021 Авторы MDN.
Лицензия Creative Commons Attribution-ShareAlike License v2.5 или более поздняя.
https://developer.mozilla.org/en-US/docs/Web/CSS/:nth-child
:nth-child() — CSS: Каскадные таблицы стилей
Псевдокласс CSS :nth-child()
сопоставляет элементы на основе их положения в группе братьев и сестер.
Обратите внимание, что в синтаксисе element:nth-child()
количество дочерних элементов включает дочерние элементы любого типа; но это считается совпадением, только если элемент в этой дочерней позиции имеет указанный тип элемента.
:nth-child()
принимает один аргумент, описывающий шаблон для сопоставления индексов элементов в списке братьев и сестер. Индексы элементов отсчитываются от 1.
:nth-child([ из ]? )
Значения ключевых слов
-
нечетные
Представляет элементы, чье числовое положение в ряду братьев и сестер является нечетным: 1, 3, 5 и т. д.
-
четный
Представляет элементы, чье числовое положение в ряду братьев и сестер четное: 2, 4, 6 и т. д.
Функциональное обозначение
-
Представляет элементы в списке, индексы которых соответствуют найденным в пользовательском шаблоне чисел, определяемом
An+B
, где:-
A
— целочисленный размер шага, -
B
— целочисленное смещение, -
n
— все неотрицательные целые числа, начиная с 0.
Может быть прочитан как
An+B
-й элемент списка.-
Примеры селекторов
-
tr:n-й ребенок (нечетный)
илиtr:n-й ребенок (2n+1)
Представляет нечетные строки таблицы HTML: 1, 3, 5 и т. д.
-
tr:nth-child(четный)
илиtr:nth-child(2n)
Представляет четные строки таблицы HTML: 2, 4, 6 и т. д.
-
:n-й ребенок(7)
Представляет седьмой элемент.
-
:n-й ребенок(5n)
Представляет элементы 5 [=5×1], 10 [=5×2], 15 [=5×3], и т. д. Первый элемент, который будет возвращен в результате формулы 0 [=5×0], что приводит к несоответствию, поскольку элементы индексируются с 1, тогда как
n
начинается с 0. Сначала это может показаться странным, но это имеет больше смысла, когдаB
часть формула>0
, как в следующем примере.-
:n-й ребенок(n+7)
Представляет седьмой и все следующие элементы: 7 [=0+7], 8 [=1+7], 9 [=2+7], и т. д.
-
:n-й ребенок(3n+4)
Представляет элементы 4 [=(3×0)+4], 7 [=(3×1)+4], 10 [=(3×2)+4], 13 [= (3×3)+4], и т. д.
-
:n-й ребенок(-n+3)
Представляет первые три элемента. [=-0+3, -1+3, -2+3]
-
p:n-й ребенок(n)
Представляет каждый
элемент в группе братьев и сестер. Это выбирает те же элементы, что и простой селекторp
(хотя и с более высокой специфичностью).-
p:nth-child(1)
илиp:nth-child(0n+1)
Представляет каждый
, который является первым элементом в группе братьев и сестер. Это то же самое, что и: селектор first-child
(и имеет ту же специфичность).-
p:n-й потомок(n+8):n-й-потомок(-n+15)
Представляет с восьмого по пятнадцатый
элементов группы братьев и сестер.
Подробный пример
HTML
span:nth-child(2n+1)
, БЕЗ<em">>
среди дочерние элементы.Выбраны дети 1, 3, 5 и 7.
<дел> Диапазон 1! Диапазон 2 Размах 3! Диапазон 4 Размах 5! Диапазон 6 Размах 7!
span:nth-child(2n+1)
, С <em">>
среди
дочерние элементы.
<р>
Выбраны дети 1, 5 и 7.3 используется в подсчете, потому что это дочерний элемент, но он не выбран, потому что это не
<span">>
.
<дел>
Размах!
Размах
Это `em`.
Размах
Размах!
Размах
Размах!
Размах