仅在停止滚动后经过特定时间时才触发事件

时间:2019-05-13 12:25:15

标签: javascript javascript-events

仅在以下情况下停止滚动后,我才想触发事件处理程序: 具体时间(比如说0.2秒)。

我有一些与css样式相关联的定位css样式(在移动版本中),每次用户滚动时,该菜单会连续不断地自动分配与滚动相对应的新值。

仅当用户启动和停止滚动后经过0.2秒时,我才想触发此事件处理程序(分配新值)。
如果我将此事件与滚动事件相关联,那么它将不会等待条件检查是否经过了0.2秒。它只会在用户滚动时继续触发事件处理程序。

那我该怎么做呢?

1 个答案:

答案 0 :(得分:3)

您可以使用此:

// Setup isScrolling variable
var isScrolling;

// Listen for scroll events
window.addEventListener('scroll', function ( event ) {

    // Clear our timeout throughout the scroll
    window.clearTimeout( isScrolling );

    // Set a timeout to run after scrolling ends
    isScrolling = setTimeout(function() {

        // Run the callback
        console.log( 'Scrolling has stopped.' );

    }, 200); // 200 for 0.2s 

}, false);