Check if element is visible in div

后端 未结 1 1248
暗喜
暗喜 2021-01-05 01:19

I have a div with many li\'s inside.

  • 相关标签:
    1条回答
    • 2021-01-05 02:04

      This is a very good answer, but here's a modified version of the Viewport plugin you mentioned.

      (function($) {
      
      $.belowthefold = function(lookIn, elements, settings) {
          var fold = $(lookIn).height() + $(lookIn).scrollTop();
          return $(elements).filter(function(){
              return fold <= $(this).offset().top - settings.threshold;
          });
      };
      
      $.abovethetop = function(lookIn, elements, settings) {
          var top = $(lookIn).scrollTop();
          return $(elements).filter(function(){
              return top >= $(this).offset().top + $(this).height() - settings.threshold;
          });
      };
      
      $.rightofscreen = function(lookIn, elements, settings) {
          var fold = $(lookIn).width() + $(lookIn).scrollLeft();
          return $(elements).filter(function(){
              return fold <= $(this).offset().left - settings.threshold;
          });
      };
      
      $.leftofscreen = function(lookIn, elements, settings) {
          var left = $(lookIn).scrollLeft();
          return $(elements).filter(function(){
              return left >= $(this).offset().left + $(this).width() - settings.threshold;
          });
      };
      
      })(jQuery);
      

      With HTML like this:

      <div id="lookInMe">
          <div class="peek"></div>
          <div class="peek"></div>
          [ ... ]
      </div>
      

      Call it like this:

      $.belowthefold("#lookInMe", ".peek", {threshold : 0}).text("Below");
      $.abovethetop("#lookInMe", ".peek", {threshold : 0}).text("Above");
      $.leftofscreen("#lookInMe", ".peek", {threshold : 0}).text("Left");
      $.rightofscreen("#lookInMe", ".peek", {threshold : 0}).text("Right");
      

      http://jsfiddle.net/daCrosby/vhF7x/1/

      0 讨论(0)
    提交回复
    热议问题