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

:last-child伪类不生效但:first-child正常,原因是什么?

问题出在哪?

p:last-child这个选择器的逻辑是:选中既是p标签,同时又是它父元素的最后一个子元素的元素。

看你的代码:

  • div里的最后一个p,刚好是div的最后一个子元素,所以被选中变红,没问题。
  • 你说body里的最后一个p没变红,要么是你实际代码里body的最后一个子元素不是这个p(比如body末尾加了script、style这类标签),要么是你误解了这个选择器的作用——它不是选页面里所有p的最后一个,而是每个父元素里的最后一个p,且这个p必须是父元素的最后一个子元素。
怎么解决?

如果你就是想选每个父元素里的最后一个p(不管父元素最后一个子元素是不是p),换用:last-of-type就行,它专门负责找父元素下某类标签的最后一个:

p:last-of-type {
  color: red;
}

这样不管body中间有没有div,body里的最后一个p、div里的最后一个p都会被选中变红,刚好符合你要的效果。

额外说下:first-child为啥正常

因为你代码里body的第一个子元素是p,div的第一个子元素也是p,所以p:first-child刚好能匹配到这些元素。要是body开头第一个元素不是p,那p:first-child也不会生效,道理和:last-child是一样的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:45:35