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

如何为菜单第4个同类别元素加类并实现分段滚动效果?

解决方案

需求1:为每第4个同类元素添加额外类

直接通过JS选中目标元素后,遍历判断位置即可实现:

// 替换成你的目标类名
const elements = document.querySelectorAll('.your-target-class');

elements.forEach((el, index) => {
  // 匹配第4、8、12...个元素(索引从0开始,用index+1判断位置)
  if ((index + 1) % 4 === 0) {
    el.classList.add('new-class');
  }
});

需求2:按行分组区块实现分段滚动

没必要事后再选元素分组,直接在拼接menu字符串时就按每行3个的规则包裹分组容器(比如<section>或带类的div),更高效:

let menu = '';
const items = document.getElementsByTagName('item'); // 假设已解析XML拿到所有item节点
let count = 0;

for (let i = 0; i < items.length; i++) {
  count++;
  // 每3个元素开头添加分组容器
  if (count % 3 === 1) {
    menu += '<section class="menu-section">'; // 也可以用<div class="menu-row">
  }

  // 拼接单个区块代码,插入item内容
  menu += '<div class="col col-12 col-lg-4"><div class="lorem">';
  menu += items[i].textContent; // 读取item的CDATA内容
  menu += '</div></div>';

  // 每3个元素结尾闭合分组容器
  if (count % 3 === 0) {
    menu += '</section>';
  }
}

// 处理总数不是3的倍数的情况,补充闭合容器
if (count % 3 !== 0) {
  menu += '</section>';
}

// 将生成的菜单插入页面目标容器
document.getElementById('menu-container').innerHTML = menu;

生成的结构会自动把每行3个区块包裹在<section class="menu-section">里,之后你可以给这些section设置大间距,轻松实现分段滚动效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 02:24:22