Skip to content

Instantly share code, notes, and snippets.

@jp-resource
Last active December 6, 2018 03:03
Show Gist options
  • Save jp-resource/f63963963df19284e5f95566d9200300 to your computer and use it in GitHub Desktop.
Save jp-resource/f63963963df19284e5f95566d9200300 to your computer and use it in GitHub Desktop.
/*https://medium.com/talk-like/detecting-if-an-element-is-in-the-viewport-jquery-a6a4405a3ea2*/
$.fn.isInViewport = function() {
var elementTop = $(this).offset().top;
var elementBottom = elementTop + $(this).outerHeight();
var viewportTop = $(window).scrollTop();
var viewportBottom = viewportTop + $(window).height();
return elementBottom > viewportTop && elementTop < viewportBottom;
};
/*usage*/
if ($('#element').visible(true)) {
// The element is visible, do something
} else {
// The element is NOT visible, do something else
}
/*other JS*/
function isScrolledIntoView(elem){
var $elem = $(elem);
var $window = $(window);
var docViewTop = $window.scrollTop();
var docViewBottom = docViewTop + $window.height();
var elemTop = $elem.offset().top;
var elemBottom = elemTop + $elem.height();
return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}
/*usage*/
if(isScrolledIntoView($('#element'))){
// The element is visible, do something
$(this).children('span').text('visible');
} else {
// The element is NOT visible, do something else
$(this).children('span').text('invisible');
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment