首页
无缝滚动动画技术方案
问题描述
在实现横向无缝滚动时,遇到了一个关键问题:当容器宽度超过100%时,传统的CSS百分比动画无法准确计算滚动距离,导致动画重置时机不正确。
技术方案
核心思路
1.
无缝循环
:使用两组镜像元素
2.
实时宽度计算:
使用
useElementSize
实时获取第一组元素的实际宽度(两组元素的宽度应该一致)
3.
精确滚动距离
:将元素实际宽度作为CSS变量传递给动画
技术实现
1. 模板结构
vue
{{ item.name }}
{{ item.name }}
2. 脚本逻辑
vue
3. CSS动画
css
@keyframes scrollLeft { 0% { transform: translateX(0); } 100% { transform: translateX(var(--scroll-distance)); } } .scroll-content { animation: scrollLeft linear infinite; }