HTML图片怎么实现懒加载_HTML图片懒加载技术的实现原理和代码

图片懒加载通过延迟加载非可视区图片提升性能,核心是将真实地址存于data-src中,视口内再赋值src。推荐使用Intersection Observer监听进入视口,兼容老浏览器可用节流+getBoundingClientRect。

html图片怎么实现懒加载_html图片懒加载技术的实现原理和代码

图片懒加载是一种优化网页性能的技术,它能让页面在初始加载时只加载用户可视区域内的图片,其他图片在用户滚动到附近时再动态加载。这种做法能减少初始请求量,加快页面打开速度,节省带宽。

懒加载的实现原理

懒加载的核心思路是:不直接将图片的真实地址写在 src 属性中,而是先放在自定义属性(如 data-src)里。页面加载时,仅加载视口内的图片;当用户向下滚动,图片接近可视区域时,再把 data-src 的值赋给 src,触发图片加载。

判断图片是否进入视口,通常使用以下方法:

通过 getBoundingClientRect() 获取元素相对于视口的位置 结合 scroll 事件监听滚动行为 使用 Intersection Observer API 更高效地监听元素可见性(推荐方式)

使用 Intersection Observer 实现懒加载(现代方案)

Intersection Observer 是浏览器提供的 API,能异步监听元素是否进入视口,性能优于频繁监听 scroll 事件。

立即学习“前端免费学习笔记(深入)”;

图片1
图片2
图片3

JavaScript 代码:

const images = document.querySelectorAll(‘.lazy’);

const imageObserver = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      const img = entry.target;
      img.src = img.dataset.src;
      img.classList.remove(‘lazy’);
      imageObserver.unobserve(img);
    }
  });
});

images.forEach(img => {
  imageObserver.observe(img);
});

这段代码会观察所有带有 .lazy 类的图片,一旦进入视口,就将 data-src 赋值给 src,并停止监听该元素。

传统 scroll + getBoundingClientRect 方式(兼容性更好)

如果需要支持较老的浏览器,可以手动监听滚动事件:

window.addEventListener(‘scroll’, function() {
  const imgs = document.querySelectorAll(‘.lazy’);
  const scrollTop = window.pageYOffset;
  const viewportHeight = window.innerHeight;

  imgs.forEach(img => {
    if (img.dataset.src === ”) return; // 已加载则跳过

    const rect = img.getBoundingClientRect();
    if (rect.top = 0) {
      img.src = img.dataset.src;
      img.dataset.src = ”; // 防止重复加载
    }
  });
});

这种方式需要节流优化,避免 scroll 事件频繁触发影响性能:

function throttle(func, delay) {
  let inThrottle;
  return function() {
    if (!inThrottle) {
      func.apply(this, arguments);
      inThrottle = true;
      setTimeout(() => inThrottle = false, delay);
    }
  };
}

window.addEventListener(‘scroll’, throttle(checkImages, 100));

小结与建议

现代项目推荐使用 Intersection Observer 实现懒加载,性能好且代码简洁。对于需要兼容 IE 的场景,可采用节流 + getBoundingClientRect 的方式。同时记得给图片设置固定宽高,避免加载时页面抖动。

基本上就这些,实现起来不复杂但效果明显。

以上就是HTML图片怎么实现懒加载_HTML图片懒加载技术的实现原理和代码的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1579421.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月22日 20:36:38
下一篇 2025年12月22日 20:36:53

相关推荐

  • HTML怎么使用figure标签_HTMLfigure和figcaption标签的图文组合应用

    figure标签用于包裹独立内容块如图片、图表或代码,提供语义化结构;figcaption则为其添加标题说明,二者结合提升可读性、SEO与无障碍支持。 在HTML中,figure 和 figcaption 标签常用于图文内容的语义化组织。它们帮助开发者更清晰地表达图片、图表、代码段等内容与其说明文字…

    2025年12月22日 好文分享
    000
  • HTML文字描边阴影和渐变的CSS格式属性和实现方法

    文字效果可通过CSS实现,text-shadow添加阴影,-webkit-text-stroke实现描边,background-clip结合渐变背景制作渐变文字,三者可叠加增强视觉表现,其中阴影兼容性最佳,描边与渐变需注意浏览器支持。 在网页设计中,给文字添加描边、阴影或渐变效果可以显著提升视觉表现…

    2025年12月22日
    000
  • HTML内容解析与纯文本提取教程

    本教程旨在解决如何在JSON对象中嵌入的HTML内容中提取纯文本信息的问题。我们将介绍一种利用浏览器DOM API的简洁高效方法,通过创建临时DOM元素并使用innerText属性,结合正则表达式处理换行符,实现从复杂HTML结构中获取所需纯文本。 引言:JSON中HTML文本的解析需求 在现代we…

    2025年12月22日
    000
  • HTML图片怎么实现响应式布局_HTML图片响应式布局的解决方案

    响应式图片布局需根据场景选择方案:用max-width: 100%和height: auto保证基础自适应;srcset适配不同分辨率;picture实现艺术裁剪;背景图+媒体查询优化装饰性图像。 在现代网页设计中,图片的响应式布局至关重要。不同设备的屏幕尺寸差异大,如果图片不能自适应容器或视口大小…

    2025年12月22日
    000
  • 使用CSS在图像上叠加多个标记的专业指南

    本文详细介绍了如何利用CSS的定位属性,在背景图像上精确叠加多个标记或图标。核心方法是创建一个相对定位的容器,将背景图设为100%宽度,然后将所有叠加元素设置为绝对定位,并通过top、left等属性进行精确定位,从而实现灵活且响应式的图像内容布局。 在网页设计中,我们经常需要在一个背景图像(例如地图…

    2025年12月22日 好文分享
    000
  • 理解与动态管理HTML required 属性

    HTML required 属性是一个布尔属性,其存在即表示字段为必填项,不接受 true 或 false 值。若需在HTML中使字段非必填,则应省略该属性。对于运行时动态解除或设置必填状态,应使用JavaScript的 removeAttribute() 和 setAttribute() 方法。 …

    2025年12月22日
    000
  • HTML注释可以嵌套CSS吗_CSS代码在注释中的处理方式

    HTML注释内的CSS不会生效,因浏览器解析时会完全忽略注释内容,正确做法是使用CSS的/ … /注释语法来禁用样式规则。 HTML注释()是无法让其内部的CSS代码生效的。浏览器在解析HTML时,一旦遇到HTML注释的起始标记,就会直接跳过其内部的所有内容,直到遇到注释的结束标记。这意…

    2025年12月22日
    000
  • 动态更新HTML内容:JavaScript与DOM交互实现教程

    本教程详细讲解如何利用JavaScript动态更新HTML页面内容,特别是针对用户在下拉菜单中选择值后,将JavaScript处理后的数据实时显示在页面上的场景。文章通过示例代码展示了如何获取用户选择、创建新HTML元素并将其插入到指定位置,为实现如级联下拉菜单等交互式功能提供了基础方法。 引言:前…

    2025年12月22日
    000
  • CSS技巧:使用Flexbox实现图像的水平重复排列

    本文将介绍如何使用CSS的Flexbox布局模型,高效地将多个相同的图像元素在页面上水平排列,并紧密相邻,从而避免手动复制粘贴代码的繁琐操作,适用于游戏开发或其他需要重复元素排列的场景。通过简单易懂的示例代码,读者可以快速掌握这一实用技巧。 在网页设计和游戏开发中,经常会遇到需要将多个相同的图像并排…

    2025年12月22日 好文分享
    000
  • 使用 CSS 变量实现 Hover 效果时的字体大小动态调整

    本文将介绍如何使用 CSS 变量在鼠标悬停时动态调整元素的字体大小。通过定义 CSS 变量,并在 :hover 伪类中使用 calc() 函数对变量进行计算,可以实现灵活且易于维护的字体大小调整效果,同时兼顾不同屏幕尺寸的响应式设计。 利用 CSS 变量实现字体大小动态调整 CSS 变量(也称为自定…

    2025年12月22日
    000
  • 如何在HTML中引入外部CSS样式表?LINK标签的REL和HREF属性。

    使用link标签在head中引入外部CSS,通过rel=”stylesheet”定义关系,href指定文件路径,如。 在HTML中引入外部CSS样式表,最常用的方法是使用 link 标签,并将其放在HTML文档的 head 部分。这个标签通过两个关键属性来实现样式表的引入:R…

    2025年12月22日
    000
  • 使用CSS Flexbox实现图像的重复排列

    本文介绍如何使用CSS Flexbox布局模型,高效地将多个相同的图像元素在页面上并排排列,并提供示例代码和注意事项,帮助开发者快速实现类似Flappy Bird游戏中底部刺状障碍物的效果。通过使用Flexbox,可以避免繁琐的定位和样式调整,实现更简洁、灵活的布局。 利用Flexbox实现图像的水…

    2025年12月22日 好文分享
    000
  • 使用 CSS Flexbox 实现图像元素的水平排列

    本文介绍如何使用 CSS Flexbox 布局模型,高效地将多个相同的图像元素在页面底部水平排列,尤其适用于游戏开发中需要重复图像素材的场景,例如 Flappy Bird 游戏中的地面或障碍物。通过简单的 CSS 样式设置,可以轻松实现图像的紧密排列,并灵活控制其大小和位置。 利用 Flexbox …

    2025年12月22日 好文分享
    000
  • H5和HTML的团队协作效率谁更高_H5与HTML项目管理工具对比

    现代H5项目因模块化、组件化架构及成熟工具链支持,在团队协作效率上优于传统HTML项目。其通过前端框架实现组件隔离,支持并行开发与独立迭代,降低代码耦合与冲突;借助Git进行细粒度版本控制,结合PR/MR机制强化代码审查;利用npm/yarn管理依赖,Webpack/Vite构建项目,ESLint/…

    2025年12月22日
    000
  • 如何使用CSS将元素底部对齐到页面底部

    本文介绍了如何使用 CSS 将一个元素固定在页面的底部,避免因内容不足导致元素无法触底的问题。我们将探讨 position 属性的不同取值,以及如何结合 min-height 和 bottom 属性来实现元素底部对齐的常见需求,并提供详细的代码示例。 在Web开发中,经常会遇到需要将某个元素固定在页…

    2025年12月22日
    000
  • 颜色代码的井号是什么意思?揭示十六进制语法的必要性

    井号“#”是颜色代码的标识符,用于告诉系统后续字符为十六进制颜色值。如#FF5733被识别为橙红色,而FF5733则无效。十六进制以0–9和A–F表示数值,两位可精确对应0–255的颜色强度范围,适配RGB三原色。相比十进制rgb(52,168,83)等格式,十六进制#34A853更紧凑、易读,节省…

    2025年12月22日
    000
  • CSS滤镜filter如何影响颜色?sepia、grayscale等效果演示

    grayscale将图像转为灰度,参数0到1控制去色程度,sepia添加棕褐复古色调,两者常用于交互与视觉设计,结合brightness、contrast等滤镜可实现丰富效果,提升用户体验。 滤镜(filter)是CSS中用于对元素的视觉效果进行图形处理的强大工具,常用于图像、背景或整个容器的颜色和…

    2025年12月22日
    000
  • 怎样用浏览器开发者工具取色?精准获取任何元素的颜色代码

    使用浏览器开发者工具可快速获取网页元素颜色代码。首先通过右键“检查”或按F12打开开发者工具,点击“选择元素”图标后选中目标元素;在右侧“Styles”面板中找到color、background-color等属性,点击颜色旁的色块可调出颜色拾取器,支持实时取色、格式转换(如#hex转rgb)及透明度…

    2025年12月22日
    000
  • HTMLulolli标签列表格式的标准写法和嵌套规则

    无序列表用ul、有序列表用ol,列表项均用li;ul和ol必须仅包含li为直接子元素;可嵌套列表但需置于li内;推荐用于导航菜单,避免深度嵌套以提升可访问性和维护性。 在HTML中,ul、ol 和 li 标签用于创建列表。它们有明确的语义和标准结构,正确使用能提升页面可读性和无障碍访问支持。 基本语…

    好文分享 2025年12月22日
    000
  • HTMLtemplate标签的模板内容格式规范和使用场景

    template标签用于定义可复用但不立即渲染的HTML结构,支持任意合法HTML元素且内容默认不执行;常用于列表项渲染、模态框预定义、Web Components等场景,通过JavaScript克隆content属性实现动态插入,提升代码可维护性与性能。 HTML 中的 template 标签用于…

    2025年12月22日
    000

发表回复

登录后才能评论
关注微信