懒加载

解析

懒加载,又称为延迟加载。
在程序启动的时候先不加载,在程序运行的时候再去加载需要的资源。

作用

在访问数据量过大时,减少并发量,降低系统资源的消耗,节省内存空间;
优化网站性能,提高用户体验。

原理

图片懒加载:
h 将所有img标签的src指向同一张图,当页面加载时作为占位图存在;
h 自定义属性data-src,用来存储真实的图片链接;
0 给window绑定scroll事件
1 判断图片是否出现在可视区域即需要加载此资源;
2 把src的值替换为data-src开始加载图片并显示;
3 添加arrt或class为loaded防止重复加载

新闻懒加载:
0 给window绑定scroll事件;
1 判断新闻是否出现在可视区域;
2 用ajax获得后台news数据;
3 把数据填充在html标签里,放在页面上;

核心

可视区域 scrollTop、offsetTop......
由于 :
窗口高度 + 垂直滚动距离 = 元素垂直方向距离
所以 :
窗口高度 + 垂直滚动距离 > 元素垂直方向距离 元素开始出现
垂直滚动距离 > 元素垂直方向距离 元素开始消失
垂直滚动距离 > 元素垂直方向距离 + 元素自身高度 元素消失完毕

------------------------------------判断可视区域
function isVisible($node) {
  var windowHeight = $(window).height(),       //窗口高度          
      scrollTop = $(window).scrollTop()     //垂直滚动距离  
      offsetTop = $node.offset().top,  //此元素垂直方向距离
      nodeHeight = $node.outerHeight(true); //元素自身高度

 if (windowHeight + scrollTop > offsetTop  &&  offsetTop + nodeHeight  > scrollTop){
         return true }
   return false
 }


------------------------------------每当元素出现在窗口,控制台输出true
$(window).on('scroll',function result(){
        if( isVisible($node) ){
            console.log(true);
        }
})


------------------------------------仅当元素第一次出现在窗口,控制台输出true
$(window).on('scroll',result);
function result(){
        if($node.not('.show').length === 1 && isVisible($node)){
            console.log(true);
            $node.addClass('.show');
        }
        else if(!isVisible($node)){
        }
    }

应用

demo-图片懒加载
demo-新闻懒加载

问题

1 一开始是空白?
首先检查是否在可视范围,进行加载

2 鼠标滚动,连续多次触发事件?
添加状态锁,本次加载完成前不触发事件

3 数据获取一直进行,无法结束?
添加数据锁,检测到没有新数据,不加载并退出

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载地址:https://segmentfault.com/a/1190000010744417懒加载什么是懒加载...
    秀逼阅读 500评论 0 0
  • 什么是懒加载 对于用户暂时不需要的数据,不在页面打开的时候就去发送请求,设置一个条件,当用户触发条件的时候再去加载...
    刘圣凯阅读 252评论 0 0
  • 1.如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。写一个函数 isVisible...
    Rising_suns阅读 314评论 0 0
  • 1、懒加载 1.什么是懒加载? 懒加载也就是延迟加载。当访问一个页面的时候,先把img元素或是其他元素的背景图片路...
    xiaolizhenzhen阅读 70,506评论 18 160
  • 1 2323人23人23人23人23人23人23 2 额外范文芳违反
    佛门竹子阅读 1,030评论 0 49