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

如何用CSS选择排除指定类的首个可见子元素?

解决CSS选择首个非隐藏子元素(排除特定类)的问题

你遇到的核心问题是:原CSS中的:first-child仅会匹配父元素的第一个子元素,当这个子元素带有.HideWidget类时,:.field:not(.HideWidget):first-child就无法匹配到后续符合条件的元素,因此只有第二个.child里的"Four"被选中。

兼容大部分浏览器的解决方案

可以通过“先统一设置,再排除后续元素”的思路实现需求:

/* 先将所有不带HideWidget类的field设为红色 */
.parent .child .field:not(.HideWidget) {
  color: red;
}
/* 把第一个符合条件的field之后的同类型元素恢复默认颜色 */
.parent .child .field:not(.HideWidget) ~ .field:not(.HideWidget) {
  color: initial;
}

代码示例

完整的HTML结构:

<div class='parent'>
  <div class='child'>
    <div class='field HideWidget'>One</div>
    <div class='field'>Two</div>
    <div class='field'>Three</div>
  </div>
  <div class='child'>
    <div class='field'>Four</div>
    <div class='field'>Five</div>
    <div class='field'>Six</div>
  </div>
  <div class='child'>
    <div class='field HideWidget'>Seven</div>
    <div class='field'>Eight</div>
    <div class='field'>Nine</div>
  </div>
</div>

原理说明

  1. 第一行CSS选中所有.child容器下不带.HideWidget类的.field元素,统一设置红色文本;
  2. 第二行CSS利用兄弟选择器~,选中那些前面已经出现过不带.HideWidget类的.field元素,将它们的文本颜色恢复为初始值,最终只有每个.child下第一个符合条件的元素会保持红色。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 10:18:36