懒加载

作者: jrg_memo | 来源:发表于2017-01-30 23:28 被阅读25次

解析

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

作用

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

原理

图片懒加载:
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 数据获取一直进行,无法结束?
添加数据锁,检测到没有新数据,不加载并退出

相关文章

  • iOS开发,懒加载

    什么是懒加载? 懒加载--比较懒的加载方式,需要的时候才加载,也称为延时加载。 所谓懒加载既是重写get方法,一定...

  • iOS开发UI篇-懒加载、重写setter方法赋值

    一、懒加载 1.懒加载定义 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。所谓懒加载,写的...

  • Fragment结合ViewPager之懒加载

    什么是懒加载?为什么要用懒加载?### 1、什么是懒加载 懒加载就是当ViewPager和Fragment结合在一...

  • iOS懒加载注意事项

    懒加载 1.懒加载 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。所谓懒加载,写的是其ge...

  • web优化之懒加载和预加载

    懒加载和预加载是常用的web优化的手段。所以我们首先应该明白什么是懒加载和预加载。懒加载:懒加载也加延迟加载,延迟...

  • fragment 懒加载

    fragment 的懒加载 懒加载 什么是懒加载:只有在 fragment 显示在界面的时候,才进行数据的加载 懒...

  • 懒加载和预加载

    懒加载和预加载 1. 懒加载 1. 什么是懒加载? 懒加载也就是延迟加载 当访问一个页面的时候,先把img元素或是...

  • Android 懒加载优化

    目录介绍 1.什么是懒加载1.1 什么是预加载1.2 懒加载介绍1.3 懒加载概括 2.实际应用中有哪些懒加载案例...

  • Swift语法点

    1 懒加载 懒加载与OC中的懒加载的区别:懒加载的类一旦 设置为nil 后, 懒加载就不会再次执行,与OC中不同,...

  • UICollectionView

    UICollectionViewFlowLayout懒加载 UICollectionView懒加载 注册item ...

网友评论

      本文标题:懒加载

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