IntersectionObserver实现图片懒加载的示例

发布时间 - 2026-01-11 03:28:02    点击率:

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实现图片懒加载的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# 实现图片懒加载  # 面试判断元素是否在可视区域中IntersectionObserver详解  # 可视化埋点平台元素曝光采集intersectionObserver思路实践  # 交叉观察器 IntersectionObserver用法详解  # IntersectionObserver判断是否在可视区域详解  # 谈谈IntersectionObserver懒加载的具体使用  # 一文详解前端进阶之IntersectionObserver  # 给大家  # 才会  # 希望能  # 这篇  # 小编  # 大家多多  # 下载图片  # 加载  # html  # list  # header  # gt  # xhtml  # brush  # DOCTYPE  # lt  # item  # body  # lightblue  # img 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  如何在宝塔面板中修改默认建站目录?  Laravel如何处理文件下载请求?(Response示例)  javascript中闭包概念与用法深入理解  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  Python函数文档自动校验_规范解析【教程】  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  装修招标网站设计制作流程,装修招标流程?  Laravel如何使用查询构建器?(Query Builder高级用法)  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  如何在宝塔面板中创建新站点?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  微信小程序 闭包写法详细介绍  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  Laravel如何集成Inertia.js与Vue/React?(安装配置)  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  Laravel中的withCount方法怎么高效统计关联模型数量  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  如何用AWS免费套餐快速搭建高效网站?  如何正确下载安装西数主机建站助手?  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何用好域名打造高点击率的自主建站?  如何彻底删除建站之星生成的Banner?  大同网页,大同瑞慈医院官网?  JavaScript如何实现类型判断_typeof和instanceof有什么区别  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  Laravel如何使用Service Container和依赖注入?(代码示例)  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  Laravel如何实现API资源集合?(Resource Collection教程)  如何基于云服务器快速搭建网站及云盘系统?  高端云建站费用究竟需要多少预算?  Laravel如何使用withoutEvents方法临时禁用模型事件  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  详解阿里云nginx服务器多站点的配置  如何用美橙互联一键搭建多站合一网站?  如何在七牛云存储上搭建网站并设置自定义域名?  Bootstrap整体框架之JavaScript插件架构  百度浏览器如何管理插件 百度浏览器插件管理方法  如何彻底卸载建站之星软件?  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  网站建设保证美观性,需要考虑的几点问题!