Skip to content

Instantly share code, notes, and snippets.

@razwan
Created June 14, 2022 17:33
Show Gist options
  • Save razwan/754a93fb1bf79d576f449fe17c69b5d8 to your computer and use it in GitHub Desktop.
Save razwan/754a93fb1bf79d576f449fe17c69b5d8 to your computer and use it in GitHub Desktop.
onScrollRAF
export const onScrollRAF = ( callback ) => {
let scrollY = window.pageYOffset;
let lastScrollY = -1;
let frameRendered = false;
window.addEventListener( 'scroll', () => {
scrollY = window.pageYOffset;
frameRendered = false;
} );
window.addEventListener( 'resize', () => {
frameRendered = false;
} );
const tick = () => {
if ( ! frameRendered ) {
callback( scrollY, lastScrollY );
lastScrollY = scrollY;
frameRendered = true;
}
requestAnimationFrame( tick );
}
requestAnimationFrame( tick );
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment