新闻中心

j*ascript_如何实现图片懒加载

2025-12-08
浏览次数:
返回列表
图片懒加载通过延迟加载非可视区图片提升性能,核心是用data-src存储真实路径,结合Intersection Observer监听进入视口时加载,推荐使用Observer API以提升效率并降低主线程负担。

javascript_如何实现图片懒加载

图片懒加载的核心思路是延迟加载页面中未进入可视区域的图片,等用户滚动到对应位置时再加载真实图片。这样可以减少初始页面加载时间、降低服务器压力、提升用户体验。

1. 基本原理:利用 data-src 占位

将真实的图片地址放在 data-src 属性中,src 先设置为空或占位图。当图片需要显示时,再把 data-src 的值赋给 src

示例HTML结构:
@@##@@

2. 判断图片是否进入视口

通过 getBoundingClientRect() 方法判断元素是否出现在浏览器视窗内。

判断函数示例:
function isInViewport(element) {
  const rect = element.getBoundingClientRect();
  return (
    rect.top <= window.innerHeight &&
    rect.bottom >= 0
  );
}

3. 监听滚动事件并加载图片

在滚动时检查所有懒加载图片,如果进入视口,就将 data-src 赋值给 src,并移除监听避免重复触发。

立即学习“J*a免费学习笔记(深入)”;

Modoer多功能点评系统2.5 精华版 Build 20110710 UTF8 Modoer多功能点评系统2.5 精华版 Build 20110710 UTF8

Modoer 是一款以本地分享,多功能的点评网站管理系统。采用 PHP+MYSQL 开发设计,开放全部源代码。因具有非凡的访问速度和卓越的负载能力而深受国内外朋友的喜爱,不局限于商铺类点评,真正实现了多类型的点评,可以让您的网站点评任何事与物,同时增加产品模块,也更好的网站产品在网站上展示。Modoer点评系统 2.5 Build 20110710更新列表1.同步 旗舰版系统框架2.增加 限制图片

Modoer多功能点评系统2.5 精华版 Build 20110710 UTF8 2 查看详情 Modoer多功能点评系统2.5 精华版 Build 20110710 UTF8 实现代码:
const images = document.querySelectorAll('img.lazy');

function lazyLoad() {
  images.forEach(img => {
    if (isInViewport(img)) {
      img.src = img.dataset.src;
      img.classList.remove('lazy'); // 加载后移除类名
    }
  });
}

// 初始化调用一次(防止首屏图片不触发)
lazyLoad();

// 监听滚动和resize
window.addEventListener('scroll', lazyLoad);
window.addEventListener('resize', lazyLoad);

4. 提高性能:使用节流(throttle)

滚动事件频繁触发,建议加上节流避免性能问题。

简单节流实现:
function throttle(func, delay) {
  let inThrottle;
  return function() {
    if (!inThrottle) {
      func.apply(this, arguments);
      inThrottle = true;
      setTimeout(() => inThrottle = false, delay);
    }
  };
}

window.addEventListener('scroll', throttle(lazyLoad, 100));

5. 使用 Intersection Observer(推荐方案)

现代浏览器推荐使用 Intersection Observer API,性能更好,无需手动计算位置。

优化版本:
const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      const img = entry.target;
      img.src = img.dataset.src;
      img.classList.remove('lazy');
      observer.unobserve(img); // 加载完成后停止观察
    }
  });
});

// 观察所有懒加载图片
images.forEach(img => {
  if (img.classList.contains('lazy')) {
    observer.observe(img);
  }
});

这种方式更高效,不会影响主线程性能,是目前最主流的做法。

基本上就这些。用 data-src 存储真实路径,结合 Intersection Observer 实现监听,能有效实现图片懒加载。兼容性方面,如需支持老浏览器,可搭配 polyfill 或降级到 scroll 事件方案。描述

以上就是j*ascript_如何实现图片懒加载的详细内容,更多请关注其它相关文章!


# 如何用  # 舟山谷歌seo价格  # 怎么做咨询网站推广员呢  # 顺德seo案例  # 贵州seo优化服务保障  # 高埗企业网站建设价格  # 人才网站如何快速推广  # 营销网站推广的软文  # 东城区网站建设开发  # 如何优化网站便知易速达  # 如何营销公墓产品推广渠道  # 您的  # 防抖  # 拖放  # 移除  # javascript  # 有什么关系  # 推荐使用  # 如何实现  # 多功能  # 加载  # 延迟加载  # win  # ai  # ssl  # 懒加载  # app  # 浏览器  # html  # java 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: J*a实现学校排课程序_面向对象结构化项目示例  我的世界官方游戏入口 我的世界官网平台直达链接  css卡片内容溢出如何处理_使用overflow隐藏或scroll显示内容  新手怎么开始学化妆 零基础化妆入门教程  深入理解J*a链表中的IPosition接口与使用  word邮件合并后日期格式不对怎么改_Word邮件合并日期格式修改方法  零跑汽车11月交付量达70327台 实现连续9个月正增长  fishbowl官网免费版 fishbowl养鱼网站入口  微博网页版直接访问 微博网页版账号管理快速入口  sublime怎么预览Markdown渲染效果_Markdown Preview插件 for sublime教程  内存检查:在VS Code中调试C++时的内存视图  Win10自动更新怎么关闭 Win10永久关闭系统更新的两种方法【终极版】  msn官网入口地址手机版 msn官方网站手机最新链接  魅族17怎样用浏览器译外语网页_iPhone魅族17浏览器译外语网页【即时翻译】  汽水音乐在线解析 汽水音乐在线解析入口  如何在更新Composer依赖后自动运行测试_使用post-update-cmd钩子触发PHPUnit  学习通在线学习平台 学习通网页版直接进入课程中心  创客贴用户入口官网登录 创客贴网页版电脑版系统  蓝湖怎样用切图标注提对接效率_蓝湖用切图标注提对接效率【设计对接】  在J*a中如何在J*a中使用异常机制记录错误日志_异常日志实践经验  C++指针和引用有什么区别_C++内存管理核心概念深度解析  yy漫画网页版官方入口_yy漫画官网登录页面链接  如何解决电商平台定制报价请求的“黑洞”问题,SprykerQuoteRequest模块助你提升客户体验与销售效率  《主播少女的秘密账号迷宫》首支宣传片  如何高效处理PHP中的Excel数据导入导出?PortPHP/Spreadsheet助你轻松搞定!  C#如何安全地从用户上传的XML文件中读取数据? 验证与清理策略  TypeScript/J*aScript:高效查找数组中首个唯一ID对象  html两个JS只运行一个怎么办_让双JS在html中都运行方法【技巧】  Sublime怎么配置Nim语言环境_Sublime Nim代码高亮与补全  C++如何进行游戏物理模拟_使用Box2D库为C++游戏添加2D物理效果  sublime怎么设置启动时打开的窗口_sublime会话管理与热退出  Yandex搜索引擎一键访问入口_俄罗斯Yandex官网免登录  Mac怎么锁定备忘录_Mac备忘录加密设置教程  J*a中实现Go语言select通道多路复用机制  漫蛙漫画登录站点 漫蛙2正版漫画快速访问  126邮箱账号注册 电脑版登录入口  企业名称高精度匹配:N-gram方法在结构相似性分析中的应用  vivo云服务网页版登录 怎么登录vivo云服务网页版  TikTok国际版网页端快速入口 TikTok全球版短视频浏览教程  动漫共和国防屏蔽稳定域名-动漫共和国官方正版直达通道  处理Kafka消费者会话超时:深入理解消息处理语义与幂等性  PyTorch模型训练效果不佳?深入剖析常见错误与调试技巧  Adobe PDF表单中利用J*aScript解析与格式化日期组件的教程  拼多多赚钱渠道_拼多多收益来源  漫蛙MANWA漫画主页官方入口 漫蛙漫画最新在线阅读地址  将HTML Canvas内容转换为可上传的图像文件(File对象)  深入理解Google Cloud Datastore查询:祖先路径与数据一致性  小米汽车11月交付量突破40000台!雷军:将继续努力  微信怎么把收藏的内容分类管理 微信收藏内容标签分类方法  AO3官方可用镜像 Archive of Our Own网页版最新入口 

搜索