0

0

CSS如何控制最后特定数量的元素_使用nth-last-child进行倒数选择

P粉602998670

P粉602998670

发布时间:2026-03-12 12:13:02

|

298人浏览过

|

来源于php中文网

原创

nth-last-child(n)从最后一个子元素开始往前数,选中第n个,仅按父容器中所有同级子元素的顺序倒数,不区分标签类型。

css如何控制最后特定数量的元素_使用nth-last-child进行倒数选择

nth-last-child(n) 怎么选倒数第几个元素

直接说结论:nth-last-child(n) 从最后一个子元素开始往前数,选中第 n 个。它只看「在父容器中同级的、同类型(默认不限类型)的子元素」里的位置,不关心内容或类名。

常见错误是以为它能跨标签类型筛选,比如父元素里有 <div> 和 <code><p></p> 混排,写 li:nth-last-child(2) 却没生效——因为压根没有 <li>,或者 <li> 不在倒数第二的位置上。

  • div:nth-last-child(1) → 选中父容器里最后一个子元素,且这个子元素必须是 div
  • :nth-last-child(2)(无标签名)→ 选中所有子元素中倒数第二个,不管是什么标签
  • 如果父元素最后一个子是 <span></span>,那 div:nth-last-child(1) 就不会匹配任何 div

想选最后3个元素,为什么 nth-last-child(-n+3) 是对的

这不是直觉能推出来的,得拆开看:-n+3 表示当 n=1 时取第3个,n=2 时取第2个,n=3 时取第1个——也就是倒数第1、第2、第3个。本质是生成一个递减序列。

容易踩的坑是写成 nth-last-child(1,2,3)(语法错误),或误用 nth-child(-n+3)(那是正向选前3个)。

智川X-Agent
智川X-Agent

中科闻歌推出的一站式AI智能体开发平台

下载

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

  • ✅ 正确: :nth-last-child(-n+3) → 倒数1~3个
  • ❌ 错误: :nth-last-child(1,2,3) → CSS 不支持逗号分隔多个值
  • ⚠️ 注意:如果父元素只有2个子,-n+3 仍会匹配倒数1和2,不会报错也不会“溢出”

nth-last-child 和 nth-last-of-type 的关键区别

前者按「所有子元素的顺序」倒数,后者只在「同标签名的兄弟元素」里倒数。这是最常混淆的点,尤其在语义化 HTML 中混用 <article></article><section></section><div> 时。 <p>比如父容器内结构是:<code><div></div> <article></article><section></section><article></article>,共4个子元素:

  • article:nth-last-child(1) → 不匹配(最后一个子是 <article></article>?不是,是第4个,但第4个确实是 <article></article> → 等等,这里要数:位置1=div,2=article,3=section,4=article → 所以 article:nth-last-child(1) ✅ 匹配第4个
  • article:nth-last-of-type(1) → 匹配倒数第一个 <article></article>,也就是第4个(因为总共就两个 article,位置2和4,倒数第一是4)
  • 但如果把最后一个 <article></article> 换成 <footer></footer>,那么 article:nth-last-of-type(1) 就变成匹配第2个,而 article:nth-last-child(1) 完全不匹配

兼容性和实际使用时的边界情况

nth-last-child 在 IE9+ 和所有现代浏览器都支持,但 IE8 及更早版本完全不支持,且不支持任何形式的回退。如果你的项目还需兼容 IE8,就得用 JS 或额外 class 控制。

性能上基本无压力,但要注意:它依赖 DOM 结构稳定。如果用 JS 动态增删子元素,样式会实时响应,但若批量操作(比如用 innerHTML 替换整个父容器),可能触发重排,倒数逻辑会基于新结构重新计算。

  • 动态插入元素后,不需要手动刷新样式,浏览器自动重算
  • display: none 隐藏的元素仍参与 nth-last-child 计数
  • visibility: hiddenopacity: 0 的元素也照常计数
  • 真正跳过计数的,只有被 remove() 或未 append 到 DOM 的节点

倒数选择看着简单,真正难的是确认「谁是子元素」「哪些被算进去」「标签是否一致」——这几个问题没理清,写十遍 -n+3 都白搭。

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

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

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

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

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

870

2024.01.03

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

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

30

2025.12.06

append用法
append用法

append是一个常用的命令行工具,用于将一个文件的内容追加到另一个文件的末尾。想了解更多append用法相关内容,可以阅读本专题下面的文章。

349

2023.10.25

python中append的用法
python中append的用法

在Python中,append()是列表对象的一个方法,用于向列表末尾添加一个元素。想了解更多append的更多内容,可以阅读本专题下面的文章。

1080

2023.11.14

python中append的含义
python中append的含义

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

185

2025.09.12

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

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

530

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

576

2023.07.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

760

2023.08.03

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

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

相关下载

更多

精品课程

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

共14课时 | 0.9万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.6万人学习

CSS教程
CSS教程

共754课时 | 41.9万人学习

最新文章

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

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