Created
January 27, 2014 10:19
-
-
Save jjmu15/8646226 to your computer and use it in GitHub Desktop.
check if element is in viewport - vanilla JS. Use by adding a “scroll” event listener to the window and then calling isInViewport().
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Determine if an element is in the visible viewport | |
function isInViewport(element) { | |
var rect = element.getBoundingClientRect(); | |
var html = document.documentElement; | |
return ( | |
rect.top >= 0 && | |
rect.left >= 0 && | |
rect.bottom <= (window.innerHeight || html.clientHeight) && | |
rect.right <= (window.innerWidth || html.clientWidth) | |
); | |
} | |
The above function could be used by adding a “scroll” event listener to the window and then calling isInViewport(). |
Just wrote a similar version that only accounts for height, but returns true when any part of the element is in the viewport:
function isVisible (ele) { const { top, bottom } = ele.getBoundingClientRect(); const vHeight = (window.innerHeight || document.documentElement.clientHeight); return ( (top > 0 || bottom > 0) && top < vHeight ); }
this is the one working as of now
Great work guys @jjmu15 and Tsimons@ Your snippets are amazing. I have been looking for something like this. Didn't want to import a library to solve just one problem
you are probably the greatest human being in my perspective now, thanks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
thank you Jjmu15 and Tsimons. Your snippets each address different needs.