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

如何用CSS选择并显示第一个CurrentYear类之前的最后3个元素

纯CSS动态显示首个CurrentYear前3个eaKeyDate元素方案

核心思路:利用CSS :has() 选择器(支持向前判断兄弟元素状态)配合:nth-child的of过滤语法,动态匹配首个.CurrentYear元素之前的最后3个非CurrentYear的.eaKeyDate元素,不需要固定前置元素数量。

完整实现代码

.eaKeyDate {
  width: 30px;
  height: 20px;
  line-height: 20px;
  text-align: center;
  border: solid 1px #ccc;
  display: none;
}

/* 所有CurrentYear元素强制显示 */
.eaKeyDate.CurrentYear {
  background-color: red !important;
  color: white !important;
  display: block !important;
}

/* 匹配首个CurrentYear之前的最后3个非CurrentYear元素 */
.eaKeyDate:not(.CurrentYear):has(~ .eaKeyDate.CurrentYear:nth-of-type(1)):nth-last-child(-n+3 of :not(.CurrentYear)) {
  background-color: green;
  color: white;
  display: block;
}
<div class="eaKeyDate">1</div>
<div class="eaKeyDate">2</div>
<div class="eaKeyDate">3</div>
<div class="eaKeyDate">4</div>
<div class="eaKeyDate">5</div>
<div class="eaKeyDate">6</div>
<div class="eaKeyDate">7</div>
<div class="eaKeyDate">8</div>
<div class="eaKeyDate">9</div>
<div class="eaKeyDate">10</div>
<div class="eaKeyDate">11</div>
<div class="eaKeyDate CurrentYear">12</div>
<div class="eaKeyDate CurrentYear">1</div>
<div class="eaKeyDate CurrentYear">2</div>
<div class="eaKeyDate CurrentYear">3</div>
<div class="eaKeyDate CurrentYear">4</div>
<div class="eaKeyDate CurrentYear">5</div>
<div class="eaKeyDate CurrentYear">6</div>
<div class="eaKeyDate CurrentYear">7</div>
<div class="eaKeyDate CurrentYear">8</div>
<div class="eaKeyDate CurrentYear">9</div>
<div class="eaKeyDate CurrentYear">10</div>
<div class="eaKeyDate CurrentYear">11</div>

兼容性说明

  • 该方案依赖CSS :has() 选择器以及:nth-child的of过滤语法,支持情况为 Chrome 105+、Safari 15.4+、Firefox 121+,可覆盖95%以上的全球用户流量
  • 若需要兼容不支持上述特性的老旧浏览器,纯CSS没有可行实现方案,只能通过JS动态计算元素位置实现需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:54:07