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 相关文章推荐
捕获键盘事件(且兼容各浏览器)
Jul 03 Javascript
jquery显示隐藏input对象
Jul 21 Javascript
jquery 取子节点及当前节点属性值的方法
Aug 24 Javascript
onclick和onblur冲突问题的快速解决方法
Apr 28 Javascript
AngularJS国际化详解及示例代码
Aug 18 Javascript
详解Webpack DLL用法以及功能
Jul 11 Javascript
js+html5实现复制文字按钮
Jul 15 Javascript
ES6模块化的import和export用法方法总结
Aug 08 Javascript
React Native基础入门之初步使用Flexbox布局
Jul 02 Javascript
微信小程序时间戳转日期的详解
Apr 30 Javascript
javascript实现blob加密视频源地址的方法
Aug 08 Javascript
JS的深浅复制详细
Oct 16 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动态创建Flash动画
2006/10/09 PHP
PHP实现的多彩标签效果代码分享
2014/08/21 PHP
php版微信自动获取收货地址api用法示例
2016/09/22 PHP
php web环境和命令行环境下查找php.ini的位置
2019/07/17 PHP
js+CSS 图片等比缩小并垂直居中实现代码
2008/12/01 Javascript
一些常用弹出窗口/拖放/异步文件上传等实用代码
2013/01/06 Javascript
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
2013/05/24 Javascript
Jquery实现视频播放页面的关灯开灯效果
2013/05/27 Javascript
Jqgrid表格随窗口大小改变而改变的简单实例
2013/12/28 Javascript
在firefox和Chrome下关闭浏览器窗口无效的解决方法
2014/01/16 Javascript
JavaScript实现的浮动层框架用法实例分析
2015/10/10 Javascript
快速掌握Node.js之Window下配置NodeJs环境
2016/03/21 NodeJs
全面了解javascript三元运算符
2016/06/27 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
2016/11/02 Javascript
bootstrap table操作技巧分享
2017/02/15 Javascript
JS实现汉字与Unicode码相互转换的方法详解
2017/04/28 Javascript
Angular实现可删除并计算总金额的购物车功能示例
2017/12/26 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
2019/01/23 Javascript
详解js动态获取浏览器或页面等容器的宽高
2019/03/13 Javascript
[37:50]VP vs TNC Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
Python中的异常处理try/except/finally/raise用法分析
2019/02/28 Python
django项目登录中使用图片验证码的实现方法
2019/08/15 Python
python画微信表情符的实例代码
2019/10/09 Python
Python基于WordCloud制作词云图
2019/11/29 Python
canvas仿写贝塞尔曲线的示例代码
2017/12/29 HTML / CSS
SmartBuyGlasses丹麦:网上购买名牌太阳镜、眼镜和隐形眼镜
2016/10/01 全球购物
ET Mall东森购物网:东森严选
2017/03/06 全球购物
Ajxa常见问题都有哪些
2014/03/26 面试题
保安队长职务说明书
2014/02/23 职场文书
乡镇干部党的群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
大学生助学金感谢信
2015/01/21 职场文书
2015年三万活动总结
2015/03/25 职场文书
生死抉择观后感
2015/06/09 职场文书
三好学生竞选稿
2015/11/21 职场文书
Python初学者必备的文件读写指南
2021/06/23 Python