IntersectionObserver实现图片懒加载的示例


Posted in Javascript onSeptember 29, 2017

API:

https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API

直接上源码:

<!DOCTYPE html>
<html>
  <header>
    <style>
      .list-item{
        height: 400px; 
        margin: 5px; 
        background-color: lightblue; 
        list-style: none;
      }
    </style>
  </header>
  <body>
    <li class="list-item"><img class="list-item-img" alt="loading" data-src='./images/icon1.png'></li>
    <li class="list-item"><img class="list-item-img" alt="loading" data-src='./images/icon2.png'></li>
    <li class="list-item"><img class="list-item-img" alt="loading" data-src='./images/icon3.png'></li>
    <li class="list-item"><img class="list-item-img" alt="loading" data-src='./images/icon4.png'></li>
    <li class="list-item"><img class="list-item-img" alt="loading" data-src='./images/icon5.png'></li>
    <li class="list-item"><img class="list-item-img" alt="loading" data-src='./images/icon6.png'></li>

    <script>
      var observer = new IntersectionObserver(function(changes) {
        console.log(changes);
        changes.forEach(function(element, index) {
          // statements
          if (element.intersectionRatio > 0 && element.intersectionRatio <= 1) {
            element.target.src = element.target.dataset.src;
          }
        });
      });


      function addObserver() {
        var listItems = document.querySelectorAll('.list-item-img');
        listItems.forEach(function(item) {
          observer.observe(item);
        });
      }

      addObserver();
    </script>
  </body>
</html>

运行代码后发现,当滚动滚动轴时,只有当<li>区域完全显示出来后才会触发相应的下载图片的http请求。

兼容浏览器:

desktop:

IntersectionObserver实现图片懒加载的示例

Mobile:

IntersectionObserver实现图片懒加载的示例

以上这篇IntersectionObserver实现图片懒加载的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JAVASCRIPT对象及属性
Feb 13 Javascript
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
Aug 15 Javascript
angularJS 中input示例分享
Feb 09 Javascript
js实现模拟计算器退格键删除文字效果的方法
May 07 Javascript
JS实现滑动菜单效果代码(包括Tab,选项卡,横向等效果)
Sep 24 Javascript
深入解析JavaScript中的arguments对象
Jun 12 Javascript
使用JS实现图片展示瀑布流效果的实例代码
Sep 12 Javascript
jQuery图片前后对比插件beforeAfter用法示例【附demo源码下载】
Sep 20 Javascript
JavaScript 最佳实践:帮你提升代码质量
Dec 03 Javascript
详解webpack 打包文件体积过大解决方案(code splitting)
Apr 10 Javascript
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
Nov 21 Javascript
Vue数字输入框组件示例代码详解
Jan 15 Javascript
Grunt针对静态文件的压缩,版本控制打包的实例讲解
Sep 29 #Javascript
jQuery选择器之子元素过滤选择器
Sep 28 #jQuery
微信禁止下拉查看URL的处理方法
Sep 28 #Javascript
jQuery选择器之属性过滤选择器详解
Sep 28 #jQuery
Angular.js中window.onload(),$(document).ready()的写法浅析
Sep 28 #Javascript
js实现登录注册框手机号和验证码校验(前端部分)
Sep 28 #Javascript
基于JavaScript实现前端数据多条件筛选功能
Aug 19 #Javascript
You might like
YB217、YB235、YB400浅听
2021/03/02 无线电
PHP+MySql+jQuery实现的&quot;顶&quot;和&quot;踩&quot;投票功能
2016/05/21 PHP
php实现用户注册密码的crypt加密
2017/06/08 PHP
jQuery使用技巧简单汇总
2013/04/18 Javascript
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
jquery图片切换实例分析
2015/04/15 Javascript
jQuery on()方法示例及jquery on()方法的优点
2015/08/27 Javascript
详解Node.js:events事件模块
2016/11/24 Javascript
Angular2学习教程之ng中变更检测问题详解
2017/05/28 Javascript
解决Vue不能检测数组或对象变动的问题
2018/02/24 Javascript
详解Require.js与Sea.js的区别
2018/08/05 Javascript
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
微信小程序中如何计算距离某个节日还有多少天
2019/07/15 Javascript
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
Vue 的双向绑定原理与用法揭秘
2020/05/06 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
[01:03:36]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第二场 1月26日
2021/03/11 DOTA
初步介绍Python中的pydoc模块和distutils模块
2015/04/13 Python
python找出因数与质因数的方法
2019/07/25 Python
对Python获取屏幕截图的4种方法详解
2019/08/27 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
2020/05/15 Python
如何理解python中数字列表
2020/05/29 Python
Django中Aggregation聚合的基本使用方法
2020/07/09 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
2020/09/01 Python
Python unittest如何生成HTMLTestRunner模块
2020/09/08 Python
html5贪吃蛇游戏使用63行代码完美实现
2013/06/25 HTML / CSS
高中生期末评语大全
2014/01/28 职场文书
幼儿园家长评语
2014/02/10 职场文书
班级寄语大全
2014/04/10 职场文书
《天游峰的扫路人》教学反思
2014/04/25 职场文书
建筑节能汇报材料
2014/08/22 职场文书
2016年社区“6.26”禁毒日宣传活动总结
2016/04/05 职场文书
最新农村养殖致富:资金投入较低的创业项目有哪些?
2019/09/26 职场文书