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

滚动时仅单个元素触发动画,如何让所有目标元素都触发?

解决多元素滚动触发动画问题

问题出在你只监听了第一个.lol元素,document.querySelector('.lol')只会返回匹配选择器的第一个DOM节点。要让所有.lol元素都触发动画,需要获取所有匹配的元素并逐个监听。

修改后的JavaScript代码

const observer = new IntersectionObserver(entries => {
  entries.forEach(entry => {
    const p = entry.target.querySelector('p');

    if (entry.isIntersecting) {
      p.classList.add('down');
      // 可选:如果希望动画只触发一次,添加下面这行
      // observer.unobserve(entry.target);
      return;
    }

    p.classList.remove('down');
  });
});

// 获取所有.lol元素并逐个监听
document.querySelectorAll('.lol').forEach(element => {
  observer.observe(element);
});

代码说明

  • document.querySelectorAll('.lol')会返回页面中所有带.lol类的元素集合
  • 通过forEach循环遍历集合,对每个元素调用observer.observe(),这样每个元素进入视口时都会触发回调逻辑
  • 可选的unobserve调用可以让元素只触发一次动画,避免滚动反复触发

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:10:32