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聚焦文本框与扩展文本框聚焦方法
Oct 12 Javascript
对JavaScript的全文搜索实现相关度评分的功能的方法
Jun 24 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
Aug 15 Javascript
javascript比较语义化版本号的实现代码
Sep 09 Javascript
Json按某个键的值进行排序
Dec 22 Javascript
javascript实现右下角广告框效果
Feb 01 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
Jul 28 Javascript
原生js实现简单的模态框示例
Sep 08 Javascript
微信小程序实现点击图片旋转180度并且弹出下拉列表
Nov 27 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
Jan 27 jQuery
jquery+php后台实现省市区联动功能示例
May 23 jQuery
Vue根据条件添加click事件的方式
Nov 09 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编程过程中需要了解的this,self,parent的区别
2009/12/30 PHP
整理的一些实用WordPress后台MySQL操作命令
2013/01/07 PHP
php网页标题中文乱码的有效解决方法
2014/03/05 PHP
PHP信号量基本用法实例详解
2016/02/12 PHP
php数组分页实现方法
2016/04/30 PHP
PHP与Java对比学习日期时间函数
2016/07/03 PHP
PHP PDOStatement::getAttribute讲解
2019/02/01 PHP
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
js中substring和substr两者区别和使用方法
2015/11/09 Javascript
原生JS 购物车及购物页面的cookie使用方法
2017/08/21 Javascript
React 高阶组件入门介绍
2018/01/11 Javascript
浅谈angularJS2中的界面跳转方法
2018/08/31 Javascript
vue构建动态表单的方法示例
2018/09/22 Javascript
js实现继承的方法及优缺点总结
2019/05/08 Javascript
Vue中的transition封装组件的实现方法
2019/08/13 Javascript
vue相同路由跳转强制刷新该路由组件操作
2020/08/05 Javascript
[03:40]2014DOTA2国际邀请赛 B神专访:躲箭真的很难
2014/07/13 DOTA
Python的一些用法分享
2012/10/07 Python
Python中的__new__与__init__魔术方法理解笔记
2014/11/08 Python
从Python程序中访问Java类的简单示例
2015/04/20 Python
Python使用设计模式中的责任链模式与迭代器模式的示例
2016/03/02 Python
老生常谈python的私有公有属性(必看篇)
2017/06/09 Python
Python内置函数——__import__ 的使用方法
2017/11/24 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
2018/05/25 Python
使用k8s部署Django项目的方法步骤
2019/01/14 Python
Python实现Keras搭建神经网络训练分类模型教程
2020/06/12 Python
Python执行时间的几种计算方法
2020/07/31 Python
python开发一个解析protobuf文件的简单编译器
2020/11/17 Python
html5 input输入实时检测以及延时优化
2018/07/18 HTML / CSS
薇姿法国官网:Vichy法国
2021/01/28 全球购物
致400米运动员广播稿
2014/02/07 职场文书
《他得的红圈圈最多》教学反思
2014/04/24 职场文书
企业员工薪酬方案
2014/06/04 职场文书
社区反邪教工作方案
2014/06/16 职场文书
技术经济专业求职信
2014/09/03 职场文书
MYSQL数据库使用UTF-8中文编码乱码的解决办法
2021/05/26 MySQL