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

能否通过CSS根据含数字的类名筛选元素并周期性设置样式?

按类名末尾数字循环给元素上色的实现方案

完全可以实现需求,下面给两种实用方法:

一、JS 方案(灵活适配任意循环周期)

直接提取类名里的数字,计算模值后对应颜色,不管循环周期n是多少都能用:

// 获取所有带actor-前缀的circle元素
const actors = document.querySelectorAll('circle[class*="actor-"]');

// 定义循环用的颜色列表,列表长度就是循环周期n(这里设为3)
const colors = ['red', 'yellow', 'blue'];

actors.forEach(actor => {
  // 从类名里提取数字部分
  const num = parseInt(actor.className.match(/actor-(\d+)/)[1], 10);
  // 计算模值对应颜色索引
  const colorIdx = num % colors.length;
  // 给元素设置填充色
  actor.style.fill = colors[colorIdx];
});

二、CSS 方案(适合固定循环周期的场景)

如果循环周期n固定(比如就是3),直接用CSS属性选择器匹配类名末尾数字即可,无需编写JS:

/* 匹配actor-0、3、6...这类数字模3余0的元素 */
circle[class$="-0"],
circle[class$="-3"],
circle[class$="-6"],
circle[class$="-9"] {
  fill: red;
}

/* 匹配actor-1、4、7...这类数字模3余1的元素 */
circle[class$="-1"],
circle[class$="-4"],
circle[class$="-7"] {
  fill: yellow;
}

/* 匹配actor-2、5、8...这类数字模3余2的元素 */
circle[class$="-2"],
circle[class$="-5"],
circle[class$="-8"] {
  fill: blue;
}

注意事项

  • CSS里的[class$="-x"]是匹配类名以"-x"结尾,像actor-10这类元素会被[class$="-0"]命中,刚好符合模3余0的要求,不会出错。
  • 要是循环周期n很大,CSS需要编写大量重复选择器,此时优先用JS方案更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 19:30:20