我正在尝试思考一种方法来测量滚动事件的速度,它将产生某种代表速度的数字(相对于所花费的时间,从滚动点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/

10-12 13:18