CSS 中 nth-child 选择器的详细用法和示例

CSS 中的 :nth-child(an+b) 是一个"结构伪类"选择器,它按照元素在 同一父元素下所有同级子节点的"绝对序号" 来匹配,而不是只看"同类"元素。

语法公式:

css 复制代码
:nth-child(an + b)   /* a、b 为整数,n 从 0 开始递增 */

常用关键字/公式速查

  • odd  等价于 2n+1
  • even  等价于 2n
  • 3n+1  第 1、4、7... 项
  • -n+5  前 5 项(n=0→5, n=1→4 ... n=5→0,之后为负不再匹配)

完整规则与示例

  1. 序号从 1 开始计数,且先按位置找,再核对类型

    若第 n 个子节点不是写在选择器前面的类型,则匹配失败。

    例:div:nth-child(3) 只有当父元素的第 3 个子节点同时是 div 时才生效。

  2. 典型用法

    表格隔行变色

    css 复制代码
    tr:nth-child(even) { background:#f5f5f5; }  /* 偶数行 */
    tr:nth-child(odd)  { background:#fff; }    /* 奇数行 */

    列表前 3 项高亮

    css 复制代码
    li:nth-child(-n+3) { color: red; }

    每 3 张图片去掉右边距

    css 复制代码
    .gallery img:nth-child(3n) { margin-right: 0; }
  3. :nth-of-type 的区别
    :nth-child 先数所有兄弟 ,再核对类型;
    :nth-of-type 只数同类兄弟 ,再取第 n 个。

    示例 HTML:

    html 复制代码
    <article>
      <p>P1</p>
      <div>D1</div>
      <p>P2</p>
    </article>
    • p:nth-child(3) 能命中"P2",因为第 3 个子节点就是 p。
    • p:nth-child(2) 不会命中任何元素,因为第 2 个子节点是 div。
    • p:nth-of-type(2) 会命中"P2",它只数 p 的同类顺序。
  4. 性能提示

    避免过度嵌套(如 html body div.wrapper ... :nth-child),保持选择器扁平;

    对于大数据列表,优先在父级一次性写规则,不要给每项再加类。

掌握"先定位序号、再核对类型"的核心思想,就可以用 :nth-child 一套公式搞定条纹、循环、切片等各种排版需求,而无需额外类名或脚本。

相关推荐
前端老石人2 分钟前
HTML 字符引用完全指南
开发语言·前端·html
幼儿园技术家27 分钟前
前端如何设计权限系统(RBAC / ABAC)?
前端
前端摸鱼匠2 小时前
Vue 3 的v-bind合并行为:讲解v-bind与普通属性合并的规则
前端·javascript·vue.js·前端框架·ecmascript
REDcker2 小时前
浏览器端Web程序性能分析与优化实战 DevTools指标与工程清单
开发语言·前端·javascript·vue·ecmascript·php·js
donecoding4 小时前
一个 sudo 引发的血案:npm 全局包权限错乱彻底修复
前端·node.js·前端工程化
风骏时光牛马4 小时前
Raku正则匹配与数据批量处理实操案例
前端
nbwenren4 小时前
2026实测:Gemini 3 镜像站视觉能力实践——拍照原型图,一键生成 HTML+CSS 代码
前端·css·html
Lee川4 小时前
Prisma 实战指南:像搭积木一样设计古诗词数据库
前端·数据库·后端
jinanwuhuaguo4 小时前
(第二十九篇)OpenClaw 实时与具身的跃迁——从异步孤岛到数字世界的“原住民”
前端·网络·人工智能·重构·openclaw