如果用户滚动超过一定距离,我希望能够“播放”无限/循环的垂直滚动动画。然后,如果用户向后滚动超过该距离,我想停止播放该动画并将状态重置为原始/开始位置。
我有感觉可以用实现clearInterval,但不能完全理解。
这是我当前的代码:HTML
<div id="list">
<span>Item 1</span>
<span>Item 2</span>
<span>Item 3</span>
<span>Item 4</span>
<span>Item 5</span>
</div> <!-- /.list -->
jQuery的
const startCycle = () => {
$('#list').stop().animate({ scrollTop: `${amount}px` }, 400, 'swing', function() {
// update the order of the elements
$(this).scrollTop(0).find('span:last').after($('span:first', this))
})
}
const playAnimation = () => {
const pixels = window.pageYOffset
console.log("pixels:", pixels)
if (pixels >= 30) {
setInterval(startCycle, 1000)
} else {
clearInterval(startCycle)
}
}
document.addEventListener("scroll", playAnimation)
这是查看笔的链接:https : //codepen.io/anon/pen/vMoJJe
不幸的是,当前动画显得不连贯或卡在上面的if语句中,然后无法停止并向上滚动。目的是停止动画并将其返回到其起始位置,span如果用户超过一定距离,则显示第一个动画。
Smart猫小萌
潇湘沐
相关分类