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

CSS :not选择器未按预期生效,最后一个段落仍有下边距问题咨询

错误原因

你使用的:not(:last-child)伪类的匹配规则是选中所有不属于父容器最后一个子元素的.paragraph元素。
你当前.col-1-of-2容器的子元素顺序为:h3 → 第一个.paragraph → h3 → 第二个.paragraph → a.btn-text,两个.paragraph都不是父容器的最后一个子元素,因此该样式对两个段落都生效,导致最后一个段落也被加上了margin-bottom。

解决方案

方案1(最常用,兼容性好)

改用:last-of-type伪类,该伪类会匹配父容器内同标签类型(这里是p标签)的最后一个元素,修改SCSS代码如下:

.paragraph{
  font-size: 1.6rem;
  &:not(:last-of-type)
  {
    margin-bottom: 3rem;
  }
}

该方案适合父容器内所有.paragraph类元素都是p标签、无其他无关p标签的场景。

方案2(精准匹配类名,兼容性一般)

如果存在其他标签也使用.paragraph类的场景,可以使用CSS按类筛选的nth-last-child语法,直接匹配最后一个带.paragraph类的元素:

.paragraph{
  font-size: 1.6rem;
  &:not(:nth-last-child(1 of .paragraph))
  {
    margin-bottom: 3rem;
  }
}

该语法支持Chrome 111+、Firefox 113+、Safari 9+版本,对兼容性要求不高的项目可使用。

方案3(全版本兼容)

如果需要兼容低版本浏览器,可以改用相邻元素margin-top的方式实现需求,避免:not匹配逻辑的问题:

.paragraph {
  font-size: 1.6rem;
}
/* 给所有紧跟在.paragraph之后的元素加上上边距,效果等价 */
.paragraph + * {
  margin-top: 3rem;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:06:03