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

如何仅通过CSS实现带info类元素按指定规则控制显示隐藏

实现方案

可以实现,不需要依赖has选择器,利用CSS的nth-child类过滤语法即可覆盖所有需求场景,兼容Chrome 90+、Firefox 113+、Safari 14+,覆盖绝大多数主流用户群体。

完整代码

/* 基础规则:所有info元素默认可见 */
.info {
    display: block;
}
/* 默认隐藏同时携带extra类的info元素 */
.info.extra {
    display: none;
}
/* 当extra类的info是同级唯一的info元素时,恢复显示 */
.info.extra:nth-child(1 of .info):nth-last-child(1 of .info) {
    display: block;
}

效果验证

  • 情况1:仅1个纯info类div:命中第一条规则,正常显示
  • 情况2:2个纯info类div:均命中第一条规则,全部显示
  • 情况3:同时存在extra类info和纯info:extra类命中第二条规则隐藏,仅纯info显示,和两个元素的前后顺序无关
  • 情况4:仅1个extra类info:命中第三条规则,正常显示

低版本浏览器降级方案

如果需要兼容不支持nth-child(of)语法的旧版本浏览器,且业务场景中所有info元素的同级不存在其他非info类的子元素,可以用only-child伪类替代,兼容所有现代浏览器:

.info {
    display: block;
}
.info.extra {
    display: none;
}
.info.extra:only-child {
    display: block;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 00:39:03