懒加载

作者: leocz | 来源:发表于2017-08-16 18:11 被阅读0次

    1. 写一个函数isVisible判断一个元素时否出现在窗口可视范围

    function isVisible($node){
      var scrollTop = $(window).scrollTop();
      var wHeight = $(window).height();
      var offsetTop = $node.offset().top;
     
      if(offsetTop < scrollTop + wHeight && offsetTop > scrollTop ){
        console.log(true);
        return true;
      }
      return false;
    }
    

    2. 当窗口滚动时,判断一个元素是不是出现在窗口可视范围,每次出现都在控制台打印 true

    $(function(){
    
      function isVisible($node){
      var scrollTop = $(window).scrollTop();
      var wHeight = $(window).height();
      var offsetTop = $node.offset().top;
      if(offsetTop < scrollTop + wHeight && offsetTop > scrollTop ){
        console.log(true);
      }
    }
     $(window).on("scroll",function(){
         isVisible($node)
      })
    })
    

    3.当窗口滚动时,判断一个元素是不是出现在窗口可视范围。在元素第一次出现时在控制台打印 true,以后再次出现不做任何处理。

    $(function(){
      var hasCome= false;
    
      function firstEnter($node){
      if(hasCome){return}
      var scrollTop = $(window).scrollTop();
      var wHeight = $(window).height();
      var offsetTop = $node.offset().top;
      
      if(offsetTop < scrollTop + wHeight && offsetTop > scrollTop ){
        console.log(true);
        hasCome = true;
      }
    }
     $(window).on("scroll",function(){
         isVisible($node)
      })
    })
    

    4. 图片懒加载的原理是什么?

    当一个网站上的图片资源很多的时候,如果把资源一次性请求过来,会造成页面加载过慢,并且服务器压力也会过大。这时,如果能先请求加载用户能看到的图片,不能看到的图片先不请求,等待图片进入可视区的时候再加载,这样分批请求加载可以解决上述困境。

    其原理:,先把img元素或是其他元素的背景图片路径不设置,只有当图片出现在浏览器的可视区域内时,才设置图片正真的路径,让图片显示出来。判断图片是否进入可视区,监听页面的滚动scroll事件,获取

    • 滚动的距离scroll(垂直$(window).scrollTop(),水平距离$(window).srollLeft()),
    • 页面可视距离window(垂直$(window).height(), 水平$(window).width()),
    • 元素距离窗口边距的距离offset(垂直offset().top,水平offset().left),

    进入可视区的条件是

    offset < scroll + window && offset >= scroll
    

    5. 懒加载实例

    效果→效果

    相关文章

      网友评论

          本文标题:懒加载

          本文链接:https://www.haomeiwen.com/subject/maobrxtx.html