滚动事件触发的次数比我想象中的多得多。它只需要在向下滚动时将.swap类赋给下一个同级元素(并附带动画效果),并且删除当前元素的.swap类。向上也是一样的。现在的情况是,如果向下/向上滚动,它基本上会跳到最后一个元素和第一个元素。这是一个单页应用,只在不同的div之间进行切换。
我已经尝试了去抖动(debouncing)、节流(throttling)和requestAnimationFrame,但到目前为止还没有成功。例如。
非常感谢!
HTML:
我已经尝试了去抖动(debouncing)、节流(throttling)和requestAnimationFrame,但到目前为止还没有成功。例如。
非常感谢!
HTML:
<div class="div1 swap">
<h1>Hello</h1>
</div>
<div class="div2">
<h1>Stack</h1>
</div>
<div class="div3">
<h1>Overflow</h1>
</div>
<div class="div4">
<h1>Please</h1>
</div>
<div class="div5">
<h1>Help</h1>
</div>
CSS:
.div1, .div2, .div3, .div4, .div5{
visibility: hidden;
position: fixed;
}
.swap{
visibility: visible;
-webkit-animation: slide-in-left .8s ease-out both;
animation: slide-in-left .8s ease-out both;
}
JS:
window.onscroll = function(event) {
var aktiv = document.querySelector('.swap');
if(this.oldScroll > this.scrollY){
console.log("Up");
aktiv.previousElementSibling.classList.toggle('swap')
aktiv.classList.toggle('swap')
}
else{
console.log("Down");
aktiv.nextElementSibling.classList.toggle('swap')
aktiv.classList.toggle('swap')
}
this.oldScroll = this.scrollY;
}