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 EasyUI API 中文文档 - Parser 解析器
Sep 29 Javascript
javascript parseInt() 函数的进制转换注意细节
Jan 08 Javascript
jquery遍历checkbox介绍
Feb 21 Javascript
jQuery简易图片放大特效示例代码
Jun 09 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
Jun 09 Javascript
使用JavaScript的AngularJS库编写hello world的方法
Jun 23 Javascript
Javascript中的Prototype到底是什么
Feb 16 Javascript
jquery html动态添加的元素绑定事件详解
May 24 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
Jun 01 Javascript
老生常谈jacascript DOM节点获取
Apr 17 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
Sep 30 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
Mar 19 jQuery
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
分享下页面关键字抓取components.arrow.com站点代码
2014/01/30 PHP
Mootools 1.2教程 排序类和方法简介
2009/09/15 Javascript
网页源代码保护(禁止右键、复制、另存为、查看源文件)
2012/05/23 Javascript
JS中window.open全屏命令解析及使用示例
2013/12/11 Javascript
css+js实现部分区域高亮可编辑遮罩层
2014/03/04 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
Web制作验证码功能实例代码
2017/06/19 Javascript
js中less常用的方法小结
2017/08/09 Javascript
10行原生JS实现文字无缝滚动(超简单)
2018/01/02 Javascript
详解基于Koa2开发微信二维码扫码支付相关流程
2018/05/16 Javascript
微信小程序多音频播放进度条问题
2018/08/28 Javascript
解决layer.open后laydate失效的问题
2019/09/06 Javascript
layui-table表复选框勾选的所有行数据获取的例子
2019/09/13 Javascript
微信小程序实现滚动Tab选项卡
2020/11/16 Javascript
python网络编程实例简析
2014/09/26 Python
Python用UUID库生成唯一ID的方法示例
2016/12/15 Python
浅析Python中的赋值和深浅拷贝
2017/08/15 Python
python进阶_浅谈面向对象进阶
2017/08/17 Python
PYQT5设置textEdit自动滚屏的方法
2019/06/14 Python
Python K最近邻从原理到实现的方法
2019/08/15 Python
Python FtpLib模块应用操作详解
2019/12/12 Python
python 解决函数返回return的问题
2020/12/05 Python
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
英国的知名精品百货公司:House of Fraser(福来德)
2016/08/14 全球购物
介绍一下linux的文件系统
2015/10/06 面试题
护士自我介绍信
2014/01/13 职场文书
中文专业学生自我评价范文
2014/02/06 职场文书
授权委托书样本
2014/04/03 职场文书
优秀工会工作者事迹材料
2014/06/02 职场文书
小学生国庆节演讲稿
2014/09/05 职场文书
教师党员自我评议不足范文
2014/10/19 职场文书
投标售后服务承诺书
2015/04/29 职场文书
酒会开场白大全
2015/06/01 职场文书
python自动化调用百度api解决验证码
2021/04/13 Python
Mysql数据库值的添加、修改、删除及清空操作实例
2021/06/20 MySQL
pd.DataFrame中的几种索引变换的实现
2022/06/16 Python