当实现CSS无缝滚动动画时,经常会出现滚动过程中出现空白间隙的问题。以下是几种高效解决方案:
<div class="scroller">
<div class="content">
<!-- 你的滚动内容 -->
<!-- 复制一份相同内容 -->
<!-- 你的滚动内容 -->
</div>
</div>
.scroller {
overflow: hidden;
white-space: nowrap;
}
.content {
display: inline-block;
animation: scroll 20s linear infinite;
}
@keyframes scroll {
0% { transform: translateX(0); }
100% { transform: translateX(-50%); }
}
// 检测动画结束并重置位置
const scroller = document.querySelector('.scroller');
scroller.addEventListener('animationiteration', () => {
scroller.style.animation = 'none';
scroller.offsetHeight; // 触发重绘
scroller.style.animation = null;
});
animation-fill-mode
属性.scroller {
animation: scroll 10s linear infinite;
animation-fill-mode: forwards;
}
.scroller {
width: 200%; /* 确保是内容宽度的两倍 */
}
will-change
优化性能.scroller {
will-change: transform;
}
transform
而非left/top
属性overflow: hidden
选择哪种方法取决于你的具体需求和浏览器兼容性要求。双倍内容法是最可靠的无缝滚动解决方案。