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

如何根据section类容器内doc类元素的数量调整dum类元素的CSS样式

实现基于容器内元素数量的差异化样式方案

要实现你描述的需求——当.section类容器中的.doc类元素数量≥2个时,调整所有.dum类元素的样式,且第一个.dum与后续.dum样式不同,下面是完整的解决方案:

核心CSS代码

/* 基础样式:当.doc数量不足2个时,所有.dum的默认样式 */
.section .doc .dum {
  color: red;
  pointer-events: none;
  opacity: .3;
}

/* 当.doc数量≥2个时,覆盖样式:第一个.doc的.dum保留特殊样式,后续的恢复正常交互 */
.section .doc:nth-last-of-type(n + 2), 
.section .doc:nth-last-of-type(n + 2) ~ .doc .dum {
  opacity: 1;
  cursor: pointer;
  pointer-events: all;
}

示例HTML结构

<!-- 第一个section:包含2个.doc,会触发差异化样式 -->
<div class="section">
  <div class="doc">
    <div class="dum">Lorem Ipsum is simply dummy text of the printing and typesetting industry.</div>
  </div>
  <div class="doc">
    <div class="dum">Lorem Ipsum is simply dummy text of the printing and typesetting industry.</div>
  </div>
</div>
<hr>
<!-- 第二个section:仅1个.doc,保持基础样式 -->
<div class="section">
  <div class="doc">
    <div class="dum">Lorem Ipsum is simply dummy text of the printing and typesetting industry.</div>
  </div>
</div>

代码逻辑拆解

  • 基础样式规则:先给所有.section下的.dum设置统一的默认样式(红色文字、半透明、不可交互),这个样式会在.doc数量不足2个时直接生效。
  • 数量判断与样式覆盖:
    • .section .doc:nth-last-of-type(n + 2):这个选择器的作用是匹配.section中至少存在2个.doc时的第一个.doc(:nth-last-of-type(n+2)表示从倒数第2个位置往前的所有元素,当元素数量≥2时,第一个元素会被选中)。
    • .section .doc:nth-last-of-type(n + 2) ~ .doc .dum:通过兄弟选择器~,选中第一个.doc之后的所有.doc下的.dum,给它们设置可交互、完全不透明的样式,和第一个.dum形成明显区分。

这样就能精准实现需求:当.doc数量≥2时,第一个.dum保持半透明不可交互,后续的.dum恢复正常可点击状态;当.doc只有1个时,.dum维持基础的半透明不可交互样式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 04:07:48