【问题标题】:Get scroll wheel amount in jQuery在jQuery中获取滚轮数量
【发布时间】:2012-06-22 15:04:53
【问题描述】:

将滚动事件绑定到对象后,如何获取用户滚动的量?

$(selector).scroll(function(e) {
    // get scroll amount
});

Firefox 和 Opera 拥有 detail 属性,而 IE、Safari 和 Opera 拥有 wheelData。更糟糕的是,Firefox 和 Opera 的评分为 -3 到 3,而 IE 和 Safari 的评分为 -120 到 120。

jQuery 是否为此提供了一个单一的规范化属性?

【问题讨论】:

    标签: javascript jquery mousewheel


    【解决方案1】:

    使用 jQuery .scrollTop() 并保存滚动事件之间的值,然后在下一次滚动事件时获取增量。

    var old_scroll_top = 0;
    
    $(document).scroll(function() {
      var current_scroll_top = $(document).scrollTop();
      var scroll_delta = current_scroll_top - old_scroll_top;
    
      // do something with current_scroll_top and scroll_delta
    
      old_scroll_top = current_scroll_top;
    });
    

    示例: jsFiddle


    更新:

    Here 是第二个示例,它展示了如何拥有一个根据 scoll 事件更新的画布。

    【讨论】:

    • +1 表示想法和示例。不幸的是,我正在尝试在不可滚动的<canvas> 中执行此操作。
    • 如何用不可见的
      覆盖 并抑制滚动条。那么当然你必须将所有点击事件传递给画布。所以这取决于你对画布的意图。您可以通过将其 css 位置属性设置为固定来确保画布不会移动。
    • 更好:如何将画布放在一个非常大的页面上并将其 css 位置属性设置为固定。
    • 我添加了一个更新,其中包含一个画布示例,它对滚动事件做出反应。如果要隐藏滚动条,只需使用 overflow:hidden。
    【解决方案2】:

    您可以为此使用 scrollTop 吗?

    var amount = $(window).scrollTop();
    

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签