我正在尝试思考一种方法来测量滚动事件的速度,它将产生某种代表速度的数字(相对于所花费的时间,从滚动点A到B点的距离)。
我欢迎以伪代码的形式提出任何建议...
我试图在网上查找有关此问题的信息,但找不到任何东西。自2014年以来非常奇怪,这怎么可能Google上没有任何东西……很奇怪!
最佳答案
var checkScrollSpeed = (function(settings){
settings = settings || {};
var lastPos, newPos, timer, delta,
delay = settings.delay || 50; // in "ms" (higher means lower fidelity )
function clear() {
lastPos = null;
delta = 0;
}
clear();
return function(){
newPos = window.scrollY;
if ( lastPos != null ){ // && newPos < maxScroll
delta = newPos - lastPos;
}
lastPos = newPos;
clearTimeout(timer);
timer = setTimeout(clear, delay);
return delta;
};
})();
// listen to "scroll" event
window.onscroll = function(){
console.log( checkScrollSpeed() );
};
演示页面:
http://codepen.io/vsync/pen/taAGd/
简化的演示:
http://jsbin.com/mapafadako/edit?js,console,output
为了获得真正的乐趣,请给真实的网站这些规则,然后复制并运行JS
关于javascript - 检测/测量滚动速度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22593286/