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 相关文章推荐
Packer 3.0 JS压缩及混淆工具 下载
May 03 Javascript
firefox浏览器下javascript 拖动层效果与原理分析代码
Dec 04 Javascript
执行iframe中的javascript方法
Oct 07 Javascript
JS 文字符串转换unicode编码函数
May 30 Javascript
详谈 Jquery Ajax异步处理Json数据.
Sep 09 Javascript
JQuery魔力之$(&quot;tagName&quot;)与selector
Mar 05 Javascript
js去除空格的12种实用方法
Nov 08 Javascript
AngularJs验证重复密码的方法(两种)
Nov 25 Javascript
JS实现的找零张数最小问题示例
Nov 28 Javascript
Element 默认勾选表格 toggleRowSelection的实现
Sep 04 Javascript
Chrome插件开发系列一:弹窗终结者开发实战
Oct 02 Javascript
vue的项目如何打包上线
Apr 13 Vue.js
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面向对象全攻略 (一) 面向对象基础知识
2009/09/30 PHP
从零开始学YII2框架(三)扩展插件yii2-gird
2014/08/20 PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
2015/12/14 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
php + WebUploader实现图片批量上传功能
2019/05/06 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
初试jQuery EasyUI 使用介绍
2010/04/01 Javascript
解析JavaScript中的不可见数据类型
2013/12/02 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
jQuery动画效果实现图片无缝连续滚动
2016/01/12 Javascript
基于jquery实现智能表单验证操作
2016/05/09 Javascript
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
2016/06/24 Javascript
javascript类型系统——undefined和null全面了解
2016/07/13 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
2016/12/21 Javascript
有关JS中的0,null,undefined,[],{},'''''''',false之间的关系
2017/02/14 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
2018/08/30 Javascript
webpack+vue+express(hot)热启动调试简单配置方法
2018/09/19 Javascript
angular异步验证防抖踩坑实录
2019/12/01 Javascript
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
django框架用户权限中的session缓存到redis中的方法
2019/08/06 Python
Python将列表中的元素转化为数字并排序的示例
2019/12/25 Python
PyCharm使用之配置SSH Interpreter的方法步骤
2019/12/26 Python
Python 给下载文件显示进度条和下载时间的实现
2020/04/02 Python
用python给csv里的数据排序的具体代码
2020/07/17 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
python的launcher用法知识点总结
2020/08/07 Python
python中K-means算法基础知识点
2021/01/25 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
html5新特性与用法大全
2018/09/13 HTML / CSS
HTML5 history新特性pushState、replaceState及两者的区别
2015/12/26 HTML / CSS
详解使用双缓存解决Canvas clearRect引起的闪屏问题
2019/04/29 HTML / CSS
《商鞅南门立木》教学反思
2014/02/16 职场文书
志愿者活动总结
2014/04/28 职场文书
应届大学生自荐书
2014/06/17 职场文书
先进单位事迹材料
2014/12/25 职场文书