OGKDev
9/27/2019 - 12:02 AM

Determine if an element is in the viewport on scroll

<div id="lazy_load_trigger"></div>
jQuery(document).ready(function ($) {
  
  $.fn.isOnScreen = function () {
  
    var win = $(window);
    var viewport = {
        top: win.scrollTop(),
        left: win.scrollLeft()
    };
    viewport.right = viewport.left + win.width();
    viewport.bottom = viewport.top + win.height();

    var bounds = this.offset();
    bounds.right = bounds.left + this.outerWidth();
    bounds.bottom = bounds.top + this.outerHeight();

    return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom));

  };
  
  if ($("#lazy_load_trigger").length) {
    
      $(window).scroll(function () {
          var myelement = $('#lazy_load_trigger');
          if (myelement.isOnScreen()) {
            // run something here like lazyloading content
          }
      });
    
  }
    
});