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 相关文章推荐
offsetHeight在OnLoad中获取为0的现象
Jul 22 Javascript
Jquery chosen动态设置值实例介绍
Aug 08 Javascript
jquery中radio checked问题
Mar 16 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
Dec 23 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
Jul 28 Javascript
jquery实现全选、不选、反选的两种方法
Sep 06 Javascript
BootStrap中的Fontawesome 图标
May 25 Javascript
NW.js 简介与使用方法
Feb 01 Javascript
vue 表单验证按钮事件交由父组件触发的方法
Dec 17 Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
May 21 Javascript
微信小程序判断页面是否从其他页面返回的实例代码
Jul 03 Javascript
Vant 中的Toast设置全局的延迟时间操作
Nov 04 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取进制余数函数代码
2012/01/19 PHP
PHP检测移动设备类mobile detection使用实例
2014/04/14 PHP
ThinkPHP查询语句与关联查询用法实例
2014/11/01 PHP
javascript 单例/单体模式(Singleton)
2011/04/07 Javascript
javascript 基础篇1 什么是js 建立第一个js程序
2012/03/14 Javascript
jQuery 自定义函数写法分享
2012/03/30 Javascript
js中substring和substr的详细介绍与用法
2013/08/29 Javascript
纯js实现遮罩层效果原理分析
2014/05/27 Javascript
jquery实现当滑动到一定位置时固定效果
2014/06/17 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
2016/08/30 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
js实现web调用摄像头 js截取视频画面
2019/04/21 Javascript
利用原生JS实现data方法示例代码
2019/05/28 Javascript
详解vue中在父组件点击按钮触发子组件的事件
2020/11/13 Javascript
深入理解python中的浅拷贝和深拷贝
2016/05/30 Python
Python环境搭建之OpenCV的步骤方法
2017/10/20 Python
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
2017/12/20 Python
Python错误处理操作示例
2018/07/18 Python
HTML5地理定位与第三方工具百度地图的应用
2016/11/17 HTML / CSS
Canvas实现贝赛尔曲线轨迹动画的示例代码
2019/04/25 HTML / CSS
银河香水:Galaxy Perfume
2019/03/25 全球购物
Talbots官网:美国成熟女装品牌
2019/11/15 全球购物
如何实现jdbc性能优化
2012/07/30 面试题
如何用Lucene索引数据库
2016/02/23 面试题
国际贸易专业推荐信
2013/11/15 职场文书
总经理助理工作职责
2014/02/06 职场文书
财务学生的职业生涯发展
2014/02/11 职场文书
2014年小学元旦活动方案
2014/02/12 职场文书
招商引资工作汇报材料
2014/10/28 职场文书
2014年效能监察工作总结
2014/11/21 职场文书
青年文明号创建口号大全
2015/12/25 职场文书
党员心得体会范文2016
2016/01/23 职场文书
党员干部学习心得体会
2016/01/23 职场文书
教您:房贷工资收入证明应该怎么写?
2019/08/19 职场文书
PyTorch 如何检查模型梯度是否可导
2021/06/05 Python