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

如何使用CSS :has选择器选中多层嵌套元素?

如何使用:has选择器进行多层级匹配

你的代码写法本身是合法且正确的,问题大概率出在浏览器对嵌套:has()选择器的支持上。

先确认你的浏览器版本

嵌套使用:has()需要浏览器支持CSS选择器 Level 4的相关特性,目前主流浏览器的支持情况:

  • Chrome/Edge: 105+
  • Firefox: 121+(需在about:config中开启layout.css.has-selector.enabled)
  • Safari: 15.4+

如果你的浏览器版本低于上述要求,嵌套:has()会无法生效。

验证代码有效性

下面是你的代码,在支持的浏览器中,第一个包含<span>的<div>会被设置橙色背景:

CSS 代码

div:has(p:has(span)) {
  background: orange;
}

HTML 代码

<div>
  <p>
    <span>Hello</span>
  </p>
</div>

<div>
  <p>Bye</p>
</div>

替代方案(针对旧浏览器)

如果需要兼容不支持嵌套:has()的浏览器,可以换一种写法,直接通过后代选择器结合:has():

div:has(p span) {
  background: orange;
}

这个写法和你原来的代码效果完全一致,且对:has()的支持要求更低,只要浏览器支持基础的:has()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 10:30:04