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 中的replace方法说明
Apr 13 Javascript
不要在cookie中使用特殊字符的原因分析
Jul 13 Javascript
动态加载js和css(外部文件)
Apr 17 Javascript
Eclipse下jQuery文件报错出现错误提示红叉
Jan 13 Javascript
jquery通过visible来判断标签是否显示或隐藏
May 08 Javascript
AngularJS学习笔记(三)数据双向绑定的简单实例
Nov 08 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
Nov 16 Javascript
Bootstrap基本组件学习笔记之分页(12)
Dec 08 Javascript
php输出全部gb2312编码内的汉字方法
Mar 04 Javascript
React-Native中props具体使用详解
Sep 04 Javascript
JavaScript中变量提升与函数提升经典实例分析
Jul 26 Javascript
JavaScript读写二进制数据的方法详解
Sep 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 无限分类的树类代码
2009/12/03 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
2016/09/11 PHP
php使用变量动态创建类的对象用法示例
2017/02/06 PHP
JavaScript this 深入理解
2009/07/30 Javascript
window.js 主要包含了页面的一些操作
2009/12/23 Javascript
鼠标滚轮控制网页横向移动实现思路
2013/03/22 Javascript
html+css+js实现xp window界面及有关功能
2013/03/26 Javascript
jQuery 获取和设置select下拉框的值实现代码
2013/11/08 Javascript
JavaScript 语言基础知识点总结(思维导图)
2013/11/10 Javascript
jquery插件jTimer(jquery定时器)使用方法
2013/12/23 Javascript
jQuery中的编程范式详解
2014/12/15 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
JS控制静态页面传递参数并获取参数应用
2016/08/10 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
2017/06/12 Javascript
在页面中引入js的两种方法(推荐)
2017/08/29 Javascript
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
微信小程序引入VANT组件的方法步骤
2019/09/19 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
2020/04/08 Javascript
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
2018/01/10 Python
详解Tensorflow数据读取有三种方式(next_batch)
2018/02/01 Python
详解python使用turtle库来画一朵花
2019/03/21 Python
一文带你了解Python 四种常见基础爬虫方法介绍
2020/12/04 Python
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
全球知名的婚恋交友网站:Match.com
2017/01/05 全球购物
联想马亚西亚官方网站:Lenovo Malaysia
2018/09/19 全球购物
关于人生的感言
2014/01/17 职场文书
企业道德讲堂实施方案
2014/03/19 职场文书
创先争优公开承诺书
2014/08/30 职场文书
先进学校事迹材料
2014/12/30 职场文书
刑事法律意见书
2015/06/04 职场文书
筑梦中国心得体会
2016/01/18 职场文书
HTML中table表格拆分合并(colspan、rowspan)
2021/04/07 HTML / CSS
如何正确理解python装饰器
2021/06/15 Python