CSS的伪类选择器:nth-child()

CSS的伪类选择器:nth-child()

CSS的伪类选择器 :nth-child() 是一个非常强大的工具,它允许你根据元素在其父元素中的位置(序数)来选择特定的子元素。这个选择器可以应用于任何元素,并且可以与类型选择器、类选择器或ID选择器结合使用。

:nth-child() 选择器接受一个参数,该参数可以是整数、关键字(evenodd)或公式(如 an+b)。

  • 正整数 :直接选择第n个子元素。不能为负数, 不能倒数
    例如

    • p:nth-child(2) 选择每个父元素中的第二个 <p> 子元素。
    • th:nth-child(66)选择第66个<th>
    • 不能用 nth-child(-1)选择倒数第一
  • 关键字even 选择偶数子元素,odd 选择奇数子元素。例如,tr:nth-child(even) 选择表格中的偶数行。

    • even 等效 2n
    • odd 等效 2n+1
  • 公式 :使用形如 an+b 的公式来选择元素。
    a是整数。b是正整数, a可正负, b只能正,
    an可以理解为步长, 正数n就是向后, 负数n就是向前, 零n如同省略n
    例如,

    • :nth-child(0n+1)等同:nth-child(1)等同:first-child 选择第一个
    • nth-child(n+5)等同:nth-child(1n+5) 选择第五个到最后一个
    • nth-child(-n+10)等同nth-child(-1n+10) 倒选第十个到第一个
    • 合起来用:nth-child(n+5):nth-child(-n+10) 选第五到第十个
    • li:nth-child(2n+1) 等同 li:nth-child(odd) 选择每个父元素中的奇数 <li> 子元素(即第1个、第3个、第5个等)。
    • 3n+1 选择 1,4,7,10...
    • 4n+1 选择 1,5,9,13...
    • 4n+2 选择 2,6,10,14...
    • -4n+16 表示从16向前,步长为4, 选择 16,12,8,4

请注意,:nth-child() 选择器是基于1的索引,即第一个子元素的索引是1。css的:nth-child(1)相当于js的children[0]

下面是一些使用 :nth-child() 选择器的示例:

css 复制代码
/* 选择每个父元素中的第三个子元素,如果它是一个<li>元素 */
ul li:nth-child(3) {
  color: red; /* 第三个列表项将显示为红色 */
}

/* 选择每个父元素中的偶数子元素,如果它是一个<li>元素 */
ul li:nth-child(even) {
  background-color: lightgray; /* 偶数列表项将有灰色背景 */
}

/* 使用公式选择子元素。这将选择第1个,第4个,第7个等... 如果它是一个<li>元素 */
ul li:nth-child(3n+1) {
  font-weight: bold; /* 符合公式的列表项将加粗显示 */
}

你也可以将 :nth-child() 选择器与其他选择器结合使用,以选择具有特定属性或属于特定类的元素的子元素。例如:

css 复制代码
/* 选择类为.items的列表中的第三个<li>子元素 */
ul.items li:nth-child(3) {
  color: green; /* .items类中的第三个列表项将显示为绿色 */
}

在这个例子中,ul.items li:nth-child(3) 选择器将选择类为 .items<ul> 元素中的第三个 <li> 子元素,并将其文本颜色设置为绿色。

CSS的伪类选择器:nth-child()的用法示例

n可以+- , 右边数字只能+

第一到第六的td : td:nth-child(n+1):nth-child(-n+6)
css 复制代码
td:nth-child(n+1):nth-child(-n+6)
第二到第八的a : a:nth-child(n+2):nth-child(-n+8)
css 复制代码
a:nth-child(n+2):nth-child(-n+8)
1等效0n+1 , 7等效0n+7 , 没有负数,不能倒数
第一个a : (1)(0n+1)
css 复制代码
a:nth-child(1)
css 复制代码
a:nth-child(0n+1)
第七个a : (7)(0n+7)
css 复制代码
a:nth-child(7)
css 复制代码
a:nth-child(0n+7)

想"-1","0n-1","-7","0n-7"从倒数开始是行不通的

第三个及之后的a : (n+3)
css 复制代码
a:nth-child(n+3)
前七个a, 第七个及之前的a : (-n+7)
css 复制代码
a:nth-child(-n+7)
第三到第七之间的a : a:nth-child(n+3):nth-child(-n+7)
css 复制代码
a:nth-child(n+3):nth-child(-n+7)
奇数行 : tr:nth-child(2n+1)tr:nth-child(odd)
css 复制代码
tr:nth-child(2n+1)
css 复制代码
tr:nth-child(odd)
偶数行 : tr:nth-child(2n)tr:nth-child(even)
css 复制代码
tr:nth-child(2n)
css 复制代码
tr:nth-child(even)
第2,12,22,32,42,52... 以10个递增 : 10n+2
css 复制代码
:nth-child(10n+2)
第52个及之前: 2,12,22,32,42,52... 以10个递减 : -10n+52
css 复制代码
:nth-child(-10n+52)

MDN Web 开发技术 :nth-child()

选择器示例

tr:nth-child(odd) or tr:nth-child(2n+1)

表示 HTML 表格中的奇数行:1、3、5......。

tr:nth-child(even) or tr:nth-child(2n)

表示 HTML 表格中的偶数行:2、4、6......。

:nth-child(7)

表示第 7 个元素。

:nth-child(5n)

表示第 5、10、15......个元素。第一个匹配的元素是 0 [=5x0],但由于元素的索引是从 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)

表示兄弟元素列表中的第 8 到第 15 个,且为 <p> 元素的元素。

相关推荐
正小安21 分钟前
如何在微信小程序中实现分包加载和预下载
前端·微信小程序·小程序
_.Switch2 小时前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
一路向前的月光2 小时前
Vue2中的监听和计算属性的区别
前端·javascript·vue.js
长路 ㅤ   2 小时前
vite学习教程06、vite.config.js配置
前端·vite配置·端口设置·本地开发
长路 ㅤ   2 小时前
vue-live2d看板娘集成方案设计使用教程
前端·javascript·vue.js·live2d
Fan_web2 小时前
jQuery——事件委托
开发语言·前端·javascript·css·jquery
安冬的码畜日常2 小时前
【CSS in Depth 2 精译_044】第七章 响应式设计概述
前端·css·css3·html5·响应式设计·响应式
赛男丨木子丿小喵2 小时前
visual studio2022添加新项中没有html和css
css·html·visual studio
莹雨潇潇3 小时前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器
Jiaberrr3 小时前
Element UI教程:如何将Radio单选框的圆框改为方框
前端·javascript·vue.js·ui·elementui