You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用CSS选择器选中父容器内最后一个class为b的动态子元素

错误原因
  1. 类选择器语法错误:你写的b:last-child是匹配<b>标签元素,要匹配类名为b的元素,需要添加类选择器前缀.,即.b:last-child。
  2. 伪类匹配逻辑理解错误::last-child、:nth-last-child()的规则是先定位父元素的对应位置子元素,再校验是否符合前置选择器条件,而非先筛选符合前置选择器的元素再取最后一个。你提供的DOM结构里,.parent的最后一个子元素是类为c的div,自然无法匹配.b:last-child。
实现方案

方案1:现代浏览器原生语法(Chrome 111+、Firefox 113+、Safari 9+均支持)

使用CSS选择器Level4新增的of限定匹配范围,直接筛选所有.b类子元素中的最后一个:

.parent > :nth-last-child(1 of .b) {
  color: #f00;
}

该方案不需要依赖DOM元素的顺序规则,即使.b元素不连续也能正常匹配。

方案2:兼容低版本浏览器实现

如果需要兼容不支持上述新语法的环境,可以用:has伪类实现,匹配后面没有其他.b兄弟元素的.b元素:

.parent > .b:not(:has(+ .b)) {
  color: #f00;
}

如果你的DOM结构固定为所有.b元素连续排列,后面紧跟.c元素,也可以用以下写法:

.parent > .b:has(+ .c) {
  color: #f00;
}

如果需要兼容完全不支持:has的极老版本浏览器,只能通过JS遍历.parent下的.b类子元素,给最后一个添加自定义类来设置样式。

内容的提问来源于stack exchange,提问作者Richard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:06:07