From 4e0b3b5f1838dcee6e1ce0770be573d8c5da48aa Mon Sep 17 00:00:00 2001 From: Chalarangelo Date: Thu, 7 Jan 2021 00:31:14 +0200 Subject: [PATCH] Add onScrollStop --- snippets/onScrollStop.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 snippets/onScrollStop.md diff --git a/snippets/onScrollStop.md b/snippets/onScrollStop.md new file mode 100644 index 000000000..39324d473 --- /dev/null +++ b/snippets/onScrollStop.md @@ -0,0 +1,32 @@ +--- +title: onScrollStop +tags: browser,event,intermediate +--- + +Runs the callback whenever the user has stopped scrolling. + +- Use `EventTarget.addEventListener()` to listen for the `'scroll'` event. +- Use `setTimeout()` to wait `150` ms until calling the given `callback`. +- Use `clearTimeout()` to clear the timeout if a new `'scroll'` event is fired in under `150` ms. + +```js +const onScrollStop = callback => { + let isScrolling; + window.addEventListener( + 'scroll', + e => { + clearTimeout(isScrolling); + isScrolling = setTimeout(() => { + callback(); + }, 150); + }, + false + ); +}; +``` + +```js +onScrollStop(() => { + console.log('The user has stopped scrolling'); +}); +```