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

CSS兄弟选择器配合:not伪类控制元素显隐失效怎么办

代码不生效的核心原因

你写的选择器有两个硬伤:

  • 类选择器语法错误:CSS里匹配类名必须在类名前加.前缀,你写的existentes:not(.d-none)是匹配名为existentes的HTML标签,根本选不到class为existentes的div。
  • 兄弟选择器匹配方向错误:CSS的相邻兄弟选择器+、通用兄弟选择器~,只能选中当前元素后面的同级元素,无法选中排在它前面的元素。你的HTML里.inexistente在.existentes前面,哪怕类名写对了也匹配不到。
修复方法

最稳妥、兼容性最好的方案是调整两个div的先后顺序,把.existentes放到.inexistente前面,调整后的HTML:

<div class="existentes d-none"></div>
<div class="inexistente">
  Ainda não existem documentos adicionados 
</div>

对应正确的CSS:

.existentes:not(.d-none) ~ .inexistente {
  display: none;
}

效果完全符合你的预期:当.existentes移除d-none类时,.inexistente会自动隐藏。

如果你不想调整DOM顺序,也可以用父级:has()选择器实现(注意仅现代浏览器支持),需要给两个div加个共同父容器,比如:

<div class="doc-wrap">
  <div class="inexistente">
    Ainda não existem documentos adicionados 
  </div>
  <div class="existentes d-none"></div>
</div>

对应CSS:

.doc-wrap:has(.existentes:not(.d-none)) .inexistente {
  display: none;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:30:57