Appearance
文字滚动效果
1. 无缝滚动实现原理
核心思路
无缝滚动的关键在于创建一个视觉上的"循环"效果,让用户感觉列表是无限滚动的。
实现步骤
克隆首个元素:将列表中的第一个元素克隆并添加到列表末尾
javascriptfunction cloneFirstItem() { let firstItem = list.children[0]; let newItem = firstItem.cloneNode(true); list.appendChild(newItem); }循环滚动逻辑:当滚动到最后一个克隆元素时,重置索引到第一个元素
javascriptif (curIndex === list.children.length - 1) curIndex = 0;视觉连续性:通过精确控制
scrollTop属性,确保滚动过程平滑自然
关键要点
- 克隆元素确保了视觉上的连续性
- 索引重置实现了逻辑上的循环
- 滚动高度的精确计算保证了定位准确性
2. JavaScript 动画实现
动画原理
本项目使用纯 JavaScript 实现动画,通过定时器逐步改变元素的 scrollTop 属性。
动画参数设计
javascript
let scrollDuration = 500; // 滚动一项需要的时间
let scrollInterval = 10; // 每次变化的间隔时间
let scrollCount = scrollDuration / scrollInterval; // 变化次数
let scrollIntervalHeight = (to - from) / scrollCount; // 每次变化的高度动画执行流程
计算起始和目标位置
javascriptlet from = curIndex * itemHeight; // 开始高度 let to = ++curIndex * itemHeight; // 目标高度分步执行动画
javascriptlet timeId = setInterval(() => { from += scrollIntervalHeight; if (from >= to) { clearInterval(timeId); // 处理循环逻辑 } list.scrollTop = from; }, scrollInterval);
