CSS 伪类选择器 :nth-child() :nth-last-child() :nth-of-type() :nth-last-of-type()

CSS About 3,794 words

:nth-child()

根据父元素内的所有兄弟元素的位置来选择子元素。

子元素的计数包括任何元素类型的兄弟子元素。

但是只有当该子元素位置上的元素与选择器的其他组件匹配时,才被视为匹配。

语法

以一个参数来描述匹配兄弟元素列表中元素索引的模式。元素索引从1开始。

:nth-child(<nth> [of <complex-selector-list>]?) {
  /* ... */
}

特殊值

  • odd:表示元素在兄弟元素列表中的位置是奇数:135……。
  • even:表示元素在兄弟元素列表中的位置是偶数:246……。

函数符号

<An+B>

表示元素在兄弟元素列表中的位置是An+B模式的元素,其中n为正整数或0AB为整数,且A不为0。其中:

  • A是整数步长,
  • B是整数偏移量,
  • n是从0开始的所有非负整数。

它可以被理解为列表中的第An+B个元素。AB必须都是<integer>值。

选择器示例

  • tr:nth-child(odd)tr:nth-child(2n+1):表示HTML表格中的奇数行:135……。
  • tr:nth-child(even)tr:nth-child(2n):表示HTML表格中的偶数行:246……。
  • :nth-child(7):表示第7个元素。
  • :nth-child(5n):表示第51015……个元素。第一个匹配的元素是0 [=5x0],但由于元素的索引是从1开始的而n0开始,所以不会匹配任何元素。这乍一看可能有点奇怪,但是当公式中的 B 部分为 >0 的值时,就会变得更有意义。
  • :nth-child(n+7):表示第七个及其之后的元素:7 [=0+7]8 [=1+7]9 [=2+7],等等。
  • 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):表示兄弟元素列表中的第8到第15个,且为<p>元素的元素。

of 示例

of <selector>是可选的。

带有 class="noted" 的偶数个列表项具备样式。

li:nth-child(even of .noted) {
  background-color: tomato;
  border-bottom-color: seagreen;
}

示例

计数时会将ol也统计在内,但在应用样式时,只会作用于li

-n+3表示前3个元素(注意:计数不区分选择器),但又要是li选择器,所以只有<li>1</li><li>2</li>有样式。

-n+33 [-0+3]2 [-1+3]1 [-2+3]n=3时已经没有意义了。

li:nth-child(-n + 3) {
  border: 2px solid orange;
  margin-bottom: 1px;
}

li:nth-child(even) {
  background-color: red;
}

<ul>
  <ol>aaa</ol>
  <li>1</li>
  <li>2</li>
  <ol>bbb</ol>
  <li>Wilma Rudolph</li>
  <li>Babe Didrikson-Zaharias</li>
  <li>Betty Cuthbert</li>
  <li>Fanny Blankers-Koen</li>
  <li>Florence Griffith-Joyner</li>
  <li>Irena Szewinska</li>
  <li>Jackie Joyner-Kersee</li>
  <li>Shirley Strickland</li>
  <li>Carl Lewis</li>
  <li>Emil Zatopek</li>
  <li>Haile Gebrselassie</li>
  <li>Jesse Owens</li>
  <li>Jim Thorpe</li>
  <li>Paavo Nurmi</li>
  <li>Sergei Bubka</li>
  <li>Usain Bolt</li>
</ul>

:nth-last-child()

从兄弟节点中从后往前匹配(倒数)处于某些位置的元素。

语法

/* 在所有兄弟节点中,从后往前
   选择所有 4 的倍数的节点 */
:nth-last-child(4n) {
  color: lime;
}

示例

  • tr:nth-last-child(odd)tr:nth-last-child(2n+1):表示HTML表的倒数的奇数行:135等。
  • tr:nth-last-child(even)tr:nth-last-child(2n):表示HTML表的倒数的偶数行:246等。
  • :nth-last-child(7):表示倒数第7个元素。
  • :nth-last-child(3n+4):表示倒数的第471013等元素。
  • :nth-last-child(-n+3):表示一组兄弟节点中的最后三个元素。
  • p:nth-last-child(n)p:nth-last-child(n+1):表示一组兄弟节点中的每个<p>元素。这与一个简单的p选择器相同。(由于n0开始,而最后一个元素从1开始,nn+1都会选择相同的元素。)
  • p:nth-last-child(1)p:nth-last-child(0n+1):表示所有处于兄弟节点中倒数第一位的元素<p>。这与:last-child选择器相同。

:nth-of-type()

基于相同类型(标签名称)的兄弟元素中的位置来匹配元素。

语法

:nth-of-type(<an-plus-b> | even | odd) {
  /* ... */
}

示例

<dd>2. Cucumbers</dd><dd>4. Apples</dd><dd>6. Pears</dd>将获得样式。

dd元素的偶数个元素。

注意::nth-of-type计数时只统计符合选择器条件的元素,所以这里<dt>Vegetables:</dt><dt>Fruits:</dt>不符合计数条件,不参与计数。

dd:nth-of-type(even) {
  border: 2px solid orange;
}

<dl>
  <dt>Vegetables:</dt>
  <dd>1. Tomatoes</dd>
  <dd>2. Cucumbers</dd>
  <dd>3. Mushrooms</dd>
  <dt>Fruits:</dt>
  <dd>4. Apples</dd>
  <dd>5. Mangos</dd>
  <dd>6. Pears</dd>
  <dd>7. Oranges</dd>
</dl>

:nth-last-of-type()

基于元素在相同类型(标签名)的兄弟元素中相对最后一个元素的位置来匹配元素。

语法

:nth-last-of-type(<an-plus-b> | even | odd) {
  /* ... */
}

示例

<dd>5. Mangos</dd><dd>2. Cucumbers</dd>将获得样式。

dd元素的倒数第36...等元素。

注意::nth-last-of-type计数时只统计符合选择器条件的元素,所以这里<dt>Vegetables:</dt><dt>Fruits:</dt>不符合计数条件,不参与计数。

dd:nth-last-of-type(3n) {
  border: 2px solid orange;
}

<dl>
  <dt>Vegetables:</dt>
  <dd>1. Tomatoes</dd>
  <dd>2. Cucumbers</dd>
  <dd>3. Mushrooms</dd>
  <dt>Fruits:</dt>
  <dd>4. Apples</dd>
  <dd>5. Mangos</dd>
  <dd>6. Pears</dd>
  <dd>7. Oranges</dd>
</dl>

参考文档

https://developer.mozilla.org/en-US/docs/Web/CSS/:nth-child

https://developer.mozilla.org/en-US/docs/Web/CSS/:nth-last-child

https://developer.mozilla.org/en-US/docs/Web/CSS/:nth-of-type

https://developer.mozilla.org/en-US/docs/Web/CSS/:nth-last-of-type

Views: 12 · Posted: 2025-11-08

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb/LiteNote

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓
Today In History
Browsing Refresh