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

CSS :has与:not(:has(*))组合选择器无法生效的问题咨询

问题:组合:has()与:not()选择器失效的原因及解决

元素结构

<div class="general">
    <div class="general-container">
        <div class="general-grid">
            <div class="general-wrapper"></div>
        </div>
    </div>
</div>

需求

当.general-wrapper无任何子元素时,隐藏.general容器。

已验证的有效代码

  1. 给无内容的.general-wrapper设置红色背景,生效正常:
.general-wrapper:not(:has(*)) {
  background-color: red;
}
  1. 匹配包含.general-wrapper的.general-container并设置绿色背景,生效正常:
.general-container:has(.general-wrapper) {
  background-color: green;
}

无效的组合代码

将两者组合后,无法实现隐藏效果:

.general-container:has( .general-wrapper:not(:has(*) ) ) {
  display:none; // 本该隐藏但实际仍显示
}

问题原因

你写的组合选择器存在语法错误::not()内部的:has(*)后面多了一个多余的空格,导致整个选择器解析失败。另外注意,你的需求是隐藏.general容器,但当前选择器的目标是.general-container,若要匹配需求还需调整选择器层级。

正确写法

  1. 修正语法错误,去掉多余空格(隐藏.general-container):
.general-container:has(.general-wrapper:not(:has(*))) {
  display: none;
}
  1. 若要隐藏最外层的.general容器(符合你的核心需求):
.general:has(.general-wrapper:not(:has(*))) {
  display: none;
}

这样就能正常实现:当.general-wrapper没有任何子元素时,隐藏指定容器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 00:48:22