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

确认CSS :has选择器对display:none元素的识别行为

CSS :has选择器对display:none元素的识别行为

CSS的:has选择器可以识别设置了display: none的元素,属于正响应,完全不需要额外结合:not([style*="display: none"])选择器。

核心逻辑

:has是基于DOM结构的存在性进行匹配的——只要目标元素在DOM树中存在(没有被remove()等操作从DOM中删除),哪怕它设置了display: none(视觉不可见、不占布局空间),:has依然能检测到它的存在。display: none只是控制元素的渲染状态,不会改变它在DOM中的存在性。

示例验证

比如下面的DOM结构:

<div class="card">
  <span class="badge" style="display: none;">隐藏徽章</span>
</div>

使用:has选择器:

/* 即使.badge是display:none,.card依然会被选中 */
.card:has(.badge) {
  background: #f5f5f5;
}

实际效果中,.card会被添加上灰色背景,证明:has确实识别到了隐藏的.badge元素。

关于:not([style*="display: none"])

这个选择器的作用是排除内联样式包含display: none的元素,但这和你的需求无关——除非你想让:has只匹配包含“非隐藏状态目标元素”的父元素,否则完全不需要加这个条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:01:07