IntersectionObserver实现图片懒加载的示例

 更新时间:2017年09月29日 08:06:32   作者:小小程序猿(^_^)  
下面小编就为大家带来一篇IntersectionObserver实现图片懒加载的示例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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:

Mobile:

以上这篇IntersectionObserver实现图片懒加载的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • js怎么终止程序return不行换jfslk

    js怎么终止程序return不行换jfslk

    alert(3)就这么段程序,没有写在function中,想啊想,怎么终止js呢?jfslk也能达到一样的效果(终止js程序)
    2013-05-05
  • js自动闭合html标签(自动补全html标记)

    js自动闭合html标签(自动补全html标记)

    假如我有一个DIV,如果没有闭合后面的样式都会乱了,这样的代码可能会影响后面的样式,我希望用JS去自动闭合这种没有闭合的标签
    2012-10-10
  • js带按钮的提示框可供选择示例代码

    js带按钮的提示框可供选择示例代码

    本文为大家介绍下使用js实现可以供选择的弹出框,具体的实现如下,感性的朋友可以参考下,希望对大家学习有所帮助
    2013-09-09
  • JS实现深拷贝和浅拷贝的方式详解

    JS实现深拷贝和浅拷贝的方式详解

    深拷贝和浅拷贝是面试中经常出现的,主要考察对基本类型和引用类型的理解深度,本文主要给大家介绍了js实现深拷贝和浅拷贝的方式,需要的朋友可以参考下
    2022-05-05
  • Javascript中的奇葩知识,你知道吗?

    Javascript中的奇葩知识,你知道吗?

    这篇文章主要介绍了一些Javascript中的奇葩知识,帮助大家更好的理解和使用JavaScript,感兴趣的朋友可以了解下
    2021-01-01
  • jqgrid 表格数据导出实例

    jqgrid 表格数据导出实例

    jqgrid并没有自带导出表格数据的方法,这里就自己实现了一个,尝试过在页面直接将数据导出,发现只有IE下可以通过调用saveas来实现,但是别的浏览器不支持,于是考虑将数据传回后台,然后后台返回下载文件来实现
    2013-11-11
  • JavaScript的防抖和节流案例

    JavaScript的防抖和节流案例

    这篇文章介绍了JavaScript的防抖和节流案例的代码实现和概念.包含详细的代码,希望对你有所帮助
    2021-06-06
  • js实现鼠标滑过文字链接色彩变化的效果

    js实现鼠标滑过文字链接色彩变化的效果

    这篇文章主要介绍了js实现鼠标滑过文字链接色彩变化的效果,涉及javascript鼠标事件及样式操作的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-05-05
  • ECMA5数组的新增方法有哪些及forEach()模仿实现

    ECMA5数组的新增方法有哪些及forEach()模仿实现

    这篇文章主要介绍了ECMA5数组的新增方法有哪些及forEach()模仿实现,需要的朋友可以参考下
    2015-11-11
  • 浅谈js数据类型判断与数组判断

    浅谈js数据类型判断与数组判断

    下面小编就为大家带来一篇浅谈js数据类型判断与数组判断。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08

最新评论