0

0

css:nth-child如何实现奇偶行样式交替_制作列表或表格交替背景

P粉602998670

P粉602998670

发布时间:2026-02-01 09:15:08

|

1016人浏览过

|

来源于php中文网

原创

:nth-child(odd)匹配父元素下第奇数个同类型子元素,但受所有子元素序号影响;:nth-of-type(odd)则仅按同标签元素计数,更适应含干扰节点的结构。

css:nth-child如何实现奇偶行样式交替_制作列表或表格交替背景

nth-child(n) 的基本写法和常见误区

:nth-child(odd):nth-child(even) 是最直接的奇偶行选择方式,但要注意:它匹配的是父元素下第 n 个子元素,且必须是同类型标签(比如都是

  • 或都是 ),不是“第 n 个同类元素”。如果父容器里混有其他标签(如

    ),序号会跳过它们继续计数,但匹配仍要求标签名一致。

    常见错误现象:ul li:nth-child(odd) 没生效,实际是因为

      下第一个子元素是注释、空格文本节点,或前面插了
      —— 此时
    • 已不是第 1、3、5 个子元素,nth-child 就选不中。

      使用场景建议:

      • 纯结构干净的列表(如手写
        • ...
        )可用 :nth-child(odd)
      • 表格中推荐用 tbody tr:nth-child(odd),并确保 显式存在(避免浏览器自动补全导致意外嵌套)

        替代方案:nth-of-type 更稳妥

        当父容器内存在干扰子元素(如标题、分隔线、广告位

        )时,:nth-of-type() 更可靠——它只按同标签名的顺序计数,忽略其他类型节点。

        立即学习前端免费学习笔记(深入)”;

        例如:

        • 第一项
        • 广告
        • 第二项
        • 第三项

        li:nth-child(odd) 只能选中第一个

      • (它是第 1 个子元素),第三个
      • 是第 4 个子元素 → 偶数 → 不匹配。
        li:nth-of-type(odd) 会把所有
      • 单独编号:第 1、2、3 个
      • → 选中第 1 和第 3 个,真正实现“奇数项”。

        注意点:

        viable
        viable

        基于GPT-4的AI非结构化数据分析平台

        下载
        • :nth-of-type 不能跨标签类型匹配,tr:nth-of-type(odd) 分开计数
        • 如果表格用了 ...tbody tr:nth-of-type(odd) 才能正确作用于数据行
        • 性能与兼容性:现代项目优先用 :nth-child

          :nth-child 在所有主流浏览器(Chrome 4+、Firefox 3.5+、Safari 3.1+、Edge 12+)中支持良好,IE9+ 也支持。性能上和 :nth-of-type 几乎无差别,现代渲染引擎已优化这类伪类计算。

          但要注意两个边界情况:

          • 不要写 :nth-child(0)(无效,CSS 规范中 n 从 1 开始)
          • :nth-child(2n+1) 等价于 :nth-child(odd),但可读性差,调试时容易看错系数
          • 若需从第 2 行开始交替(比如跳过表头),用 tr:nth-child(n+2):nth-child(odd),而不是试图改起始偏移量

          表格中真正实用的写法

          表格交替背景最常踩的坑是:样式被 干扰,或单元格 自身设置了背景盖过了行背景。

          推荐组合:

          • 显式写出 ,避免浏览器解析歧义
          • tbody tr 设置背景,而非 td
          • tbody tr:nth-child(even) 配浅灰,tbody tr:nth-child(odd) 配白底,对比清晰
          • table tbody tr:nth-child(odd) {
              background-color: #fff;
            }
            table tbody tr:nth-child(even) {
              background-color: #f8f9fa;
            }
            

            如果表格有悬停效果,记得把 :hover 放在 :nth-child 后面,否则会被覆盖: tbody tr:hover 要写在 tbody tr:nth-child(even) 之后才生效。

            真正容易被忽略的是:当表格行通过 JS 动态插入或删除时,:nth-child 会实时重算,但如果你用 class 控制(如 .row-odd),就必须手动维护 class —— 这反而更麻烦。所以原生伪类仍是首选,只要 HTML 结构可控。

    • 相关文章

      本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

      热门AI工具

      更多
      DeepSeek
      DeepSeek

      幻方量化公司旗下的开源大模型平台

      豆包大模型
      豆包大模型

      字节跳动自主研发的一系列大型语言模型

      通义千问
      通义千问

      阿里巴巴推出的全能AI助手

      腾讯元宝
      腾讯元宝

      腾讯混元平台推出的AI助手

      文心一言
      文心一言

      文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

      讯飞写作
      讯飞写作

      基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

      即梦AI
      即梦AI

      一站式AI创作平台,免费AI图片和视频生成。

      ChatGPT
      ChatGPT

      最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

      相关专题

      更多
      chrome什么意思
      chrome什么意思

      chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

      864

      2023.08.11

      chrome无法加载插件怎么办
      chrome无法加载插件怎么办

      chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

      752

      2023.11.06

      edge是什么浏览器
      edge是什么浏览器

      Edge是一款由Microsoft开发的网页浏览器,是Windows 10操作系统中默认的浏览器,其目标是提供更快、更安全、更现代化的浏览器体验。本专题为大家提供edge浏览器相关的文章、下载、课程内容,供大家免费下载体验。

      1450

      2023.08.21

      IE浏览器自动跳转EDGE如何恢复
      IE浏览器自动跳转EDGE如何恢复

      ie浏览器自动跳转edge的解决办法:1、更改默认浏览器设置;2、阻止edge浏览器的自动跳转;3、更改超链接的默认打开方式;4、禁用“快速网页查看器”;5、卸载edge浏览器;6、检查第三方插件或应用程序等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

      382

      2024.03.05

      如何解决Edge打开但没有标题的问题
      如何解决Edge打开但没有标题的问题

      若 Microsoft Edge 浏览器打开后无标题(窗口空白或标题栏缺失),可尝试以下方法解决: 重启 Edge:关闭所有窗口,重新启动浏览器。 重置窗口布局:右击任务栏 Edge 图标 → 选择「最大化」或「还原」。 禁用扩展:进入 edge://extensions 临时关闭插件测试。 重置浏览器设置:前往 edge://settings/reset 恢复默认配置。 更新或重装 Edge:检查最新版本,或通过控制面板修复

      950

      2025.04.24

      class在c语言中的意思
      class在c语言中的意思

      在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

      469

      2024.01.03

      python中class的含义
      python中class的含义

      本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

      17

      2025.12.06

      js正则表达式
      js正则表达式

      php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

      516

      2023.06.20

      2026赚钱平台入口大全
      2026赚钱平台入口大全

      2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

      54

      2026.01.31

      热门下载

      更多
      网站特效
      /
      网站源码
      /
      网站素材
      /
      前端模板

      相关下载

      更多

      精品课程

      更多
      相关推荐
      /
      热门推荐
      /
      最新课程
      Sass 教程
      Sass 教程

      共14课时 | 0.8万人学习

      Bootstrap 5教程
      Bootstrap 5教程

      共46课时 | 3.1万人学习

      CSS教程
      CSS教程

      共754课时 | 25.9万人学习

      最新文章

      更多
      关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
      php中文网:公益在线php培训,帮助PHP学习者快速成长!
      关注服务号 技术交流群
      PHP中文网订阅号
      每天精选资源文章推送

      Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号