我目前正在标题和网站的其他三个部分开发一个带有滚动视差效果(Stellar.js)的web page:但是,滚动它们会导致滞后,尤其是在页面顶部。
我已经尝试过使用压缩来减少背景图像的大小,但它并没有产生太大的差别;去除模糊效果也没有解决问题(它确实减少了延迟,但它仍然不够平滑)。
该网站在Firefox(W10)上运行良好,几乎没有丢帧,但Chrome(Windows和OS X)和Safari都存在相当滞后。
有一些JS滚动触发的脚本正在运行,但我不知道这些是否可能是原因。有什么建议吗?
答案 0 :(得分:2)
您想要做的是限制滚动事件。辩论事件意味着事件不能再发射直到一定时间之后。限制事件意味着事件只能在每个时间段内激发。
此功能可以限制事件(信用:http://sampsonblog.com/749/simple-throttle-function)
// Create the listener function
function throttle (callback, limit) {
var wait = false; // Initially, we're not waiting
return function () { // We return a throttled function
if (!wait) { // If we're not waiting
callback.call(); // Execute users function
wait = true; // Prevent future invocations
setTimeout(function () { // After a period of time
wait = false; // And allow future invocations
}, limit);
}
}
}
要使用它,只需执行以下操作:
function callback () {
console.count("Throttled");
}
window.addEventListener("scroll", throttle( callback, 200 ));