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 生成指定范围数值随机数
Jan 09 Javascript
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
Nov 25 Javascript
js导出格式化的excel 实例方法
Jul 17 Javascript
js调试系列 控制台命令行API使用方法
Jun 18 Javascript
jQuery实现商品活动倒计时
Oct 16 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
Jan 23 Javascript
three.js实现3D模型展示的示例代码
Dec 31 Javascript
详解关于Vue2.0路由开启keep-alive时需要注意的地方
Sep 18 Javascript
Vue框架里使用Swiper的方法示例
Sep 20 Javascript
记一次用vue做的活动页的方法步骤
Apr 11 Javascript
countUp.js实现数字动态变化效果
Oct 17 Javascript
微信小程序实现canvas分享朋友圈海报
Jun 21 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编程最快明白》第八讲:php启发和小结
2010/11/01 PHP
PHP递归算法的详细示例分析
2013/02/19 PHP
简单了解WordPress开发中update_option()函数的用法
2016/01/11 PHP
Exitjs获取DataView中图片文件名
2009/11/26 Javascript
Javascript学习笔记2 函数
2010/01/11 Javascript
form.submit()不能提交表单的错误原因及解决方法
2014/10/13 Javascript
基于jQuery实现仿淘宝套餐选择插件
2015/03/04 Javascript
BootStrap实现树形目录组件代码详解
2016/06/21 Javascript
Select2.js下拉框使用小结
2016/10/24 Javascript
微信小程序 wxapp地图 map详解
2016/10/31 Javascript
js遍历json的key和value的实例
2017/01/22 Javascript
微信小程序 POST请求的实例详解
2017/09/29 Javascript
AngularJS 实现购物车全选反选功能
2017/10/24 Javascript
nodejs实现简单的gulp打包
2017/12/21 NodeJs
优雅的elementUI table单元格可编辑实现方法详解
2018/12/23 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
jQuery实现王者荣耀手风琴效果
2020/01/17 jQuery
微信小程序利用for循环解决内容变更问题
2020/03/05 Javascript
解决vue-router路由拦截造成死循环问题
2020/08/05 Javascript
Python实现一个转存纯真IP数据库的脚本分享
2017/05/21 Python
Python设计模式之门面模式简单示例
2018/01/09 Python
Django自定义manage命令实例代码
2018/02/11 Python
Python Pandas找到缺失值的位置方法
2018/04/12 Python
django缓存配置的几种方法详解
2018/07/16 Python
python绘制简单彩虹图
2018/11/19 Python
Python3爬虫使用Fidder实现APP爬取示例
2018/11/27 Python
Django 模型类(models.py)的定义详解
2019/07/19 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
2020/04/24 Python
Python decimal模块使用方法详解
2020/06/08 Python
Python LMDB库的使用示例
2021/02/14 Python
利用CSS3实现自定义滚动条代码分享
2016/08/18 HTML / CSS
光信息科学与技术专业职业生涯规划
2014/03/13 职场文书
劳动仲裁调解书
2015/05/20 职场文书
2015年度高中教师工作总结
2015/05/26 职场文书
Python实现单例模式的5种方法
2021/06/15 Python