Marko Petković
Marko Petković

Reputation: 185

Detecting on viewport

I need to detect when bottom border of some div hit the bottom of viewport and then to trigger some function. I tried with this

jQuery(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));

};

$(window).scroll(function() {
   if ($('.gallery full-width-container').isOnScreen() == true) {
     $('.portfolio-description-showinfo').addClass('testing');   
   }
});

});

But this function detect when div is entering viewport, not when the bottom of div is on bottom of viewport. Any hint, help? Thanks.

Upvotes: 0

Views: 54

Answers (1)

archeal anie
archeal anie

Reputation: 260

Try this:

$(window).scroll(function() {
   if ($('.gallery full-width-container').isOnScreen() == true) {
      if ($(".portfolio-description-showinfo").offset().top + $(".portfolio-description-showinfo").height()) >= $(window).height() {
         $('.portfolio-description-showinfo').addClass('testing');  
      } 
   }
});

Upvotes: 1

Related Questions