前言
最近需要評估一個需求,是要在滾動結束後觸發視覺效果,經過搜尋後發現有 Scrollend
這個事件可以使用,
在此之前如果有類似需求我可能會使用 setTimeout 來做
使用方法
window.addEventListener('scroll', function() {
clearTimeout(scrollTimer);
scrollTimer = setTimeout(function() {
console.log('滾動結束');
}, 200);
});
但相較之下比較像是滾動暫停而不是結束,所以剛好能夠使用 Scrollend
事件來實作,使用上也不困難
document.addEventListener("scrollend", (event) => {
console.log('滾動結束');
});
// 或者是
document.onscrollend = (event) => {
console.log('滾動結束');
};
注意事項
-
不過如果在滾動時,畫面沒有做任何移動將不會進行觸發
-
目前 Safari 並未支援
scrollend
所以還是得用 setTimeout 來實現