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 相关文章推荐
jQuery中与toggleClass等价的程序段 以及未来学习的方向
Mar 18 Javascript
前后台交互过程中json格式如何解析以及如何生成
Dec 26 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
Jun 24 Javascript
jQuery DOM操作实例
Mar 05 Javascript
JavaScript二维数组实现的省市联动菜单
May 08 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
Dec 29 Javascript
transport.js和jquery冲突问题的解决方法
Feb 10 Javascript
Bootstrap布局组件应用实例讲解
Feb 17 Javascript
深入解析桶排序算法及Node.js上JavaScript的代码实现
Jul 06 Javascript
关于js二维数组和多维数组的定义声明(详解)
Oct 02 Javascript
基于JavaScript实现全选、不选和反选效果
Feb 15 Javascript
基于AngularJS实现表单验证功能
Jul 28 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
PHP采集利器 Snoopy 试用心得
2011/07/03 PHP
基于PHP对XML的操作详解
2013/06/07 PHP
php数组添加与删除单元的常用函数实例分析
2015/02/16 PHP
php微信开发自定义菜单
2016/08/27 PHP
php实现当前页面点击下载文件的简单方法
2016/09/22 PHP
javascript之ESC(第二类混淆)
2007/05/06 Javascript
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
2010/03/12 Javascript
JQuery select标签操作代码段
2010/05/16 Javascript
JQuery AJAX 中文乱码问题解决
2013/06/05 Javascript
一个通过script自定义属性传递配置参数的方法
2014/09/15 Javascript
Javascript的setTimeout()使用闭包特性时需要注意的问题
2014/09/23 Javascript
JavaScript 学习笔记之操作符
2015/01/14 Javascript
JavaScript使用键盘输入控制实现数字验证功能
2016/08/19 Javascript
AngularJS实现按钮提示与点击变色效果
2016/09/07 Javascript
详解在Vue中通过自定义指令获取dom元素
2017/03/04 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
2019/04/22 Javascript
Vue运用transition实现过渡动画
2019/05/06 Javascript
JS学习笔记之闭包小案例分析
2019/05/29 Javascript
js实现无缝轮播图
2020/03/09 Javascript
vue实现简单全选和反选功能
2020/09/15 Javascript
Python continue语句用法实例
2014/03/11 Python
在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
2016/06/07 Python
Django使用Celery异步任务队列的使用
2018/03/13 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
海信商城:海信电视、科龙空调、容声冰箱官方专卖
2017/02/07 全球购物
六查六看剖析材料
2014/02/15 职场文书
2014年预备党员学习两会心得体会
2014/03/17 职场文书
让世界充满爱演讲稿
2014/05/24 职场文书
求职自我推荐信
2014/06/25 职场文书
试用期自我评价范文
2015/03/10 职场文书
大学生实习介绍信
2015/05/05 职场文书
创业计划书之网络外卖
2019/10/31 职场文书
一文帮你理解PReact10.5.13源码
2021/04/03 Javascript
Python竟然能剪辑视频
2021/05/25 Python
Java获取字符串编码格式实现思路
2022/09/23 Java/Android