function isOnScreen(elem) { // if the element doesn't exist, abort if (elem.length == 0) { return; } var $window = jQuery(window); var viewport_top = $window.scrollTop(); var viewport_height = $window.height(); var viewport_bottom = viewport_top + viewport_height; var $elem = jQuery(elem); var top = $elem.offset().top; var height = $elem.height(); var bottom = top + height; return ( (top >= viewport_top && top < viewport_bottom) || (bottom > viewport_top && bottom <= viewport_bottom) || (height > viewport_height && top <= viewport_top && bottom >= viewport_bottom) ); }