可以使用Window.Onscroll方法来包含滚动方向的检测吗?

Dav*_*iev 14 javascript

可以使用Window.Onscroll方法来包含滚动方向的检测吗?

Edw*_*ale 21

如果在页面加载时记录scrollX和scrollY,并且每次发生滚动事件,则可以将先前的值与新值进行比较,以了解滚动的方向.这是一个概念证明:

function scrollFunc(e) {
    if ( typeof scrollFunc.x == 'undefined' ) {
        scrollFunc.x=window.pageXOffset;
        scrollFunc.y=window.pageYOffset;
    }
    var diffX=scrollFunc.x-window.pageXOffset;
    var diffY=scrollFunc.y-window.pageYOffset;

    if( diffX<0 ) {
        // Scroll right
    } else if( diffX>0 ) {
        // Scroll left
    } else if( diffY<0 ) {
        // Scroll down
    } else if( diffY>0 ) {
        // Scroll up
    } else {
        // First scroll event
    }
    scrollFunc.x=window.pageXOffset;
    scrollFunc.y=window.pageYOffset;
}
window.onscroll=scrollFunc
Run Code Online (Sandbox Code Playgroud)

  • 我想你可以得到事件的时间戳.找出两个连续事件之间的差异,并将上面计算的差异除以时间戳差异. (5认同)