js实现img图片懒加载

在前端中,可以使用 JavaScript 来实现图片的懒加载。下面是一种常见的实现方式:

  1. 在 HTML 文件中,将需要懒加载的图片的 src 属性替换为一个占位符,例如使用一个透明的空白图片或者是一个包含背景色的 div。
  2. 给这些图片添加一个自定义的属性,例如 data-src,并将真实的图片路径作为该属性的值,例如<img data-src="path/to/real/image.jpg">
  3. 使用 JavaScript 监听滚动事件,并检查图片是否进入了可见区域。
  4. 当图片进入可见区域时,将 data-src 属性的值赋给 src 属性,从而触发图片加载。

下面是一个简单的示例代码:

html 复制代码
<!-- HTML -->
<img data-src="path/to/real/image.jpg" class="lazy-load">
javascript 复制代码
// JavaScript
window.addEventListener('DOMContentLoaded', function() {
  var lazyImages = document.querySelectorAll('.lazy-load');
  
  function lazyLoad() {
    lazyImages.forEach(function(img) {
    	let r = img.getBoundingClientRect().top <= window.innerHeight;
    	let u = img.getBoundingClientRect().bottom >= 0 ;
    	let t = getComputedStyle(img).display !== 'none';
      if ( r && u && t ) {
        img.src = img.getAttribute('data-src');
        img.classList.remove('lazy-load');
      }
    });
  }
  
  window.addEventListener('scroll', lazyLoad);
  window.addEventListener('resize', lazyLoad);
  window.addEventListener('orientationchange', lazyLoad);
});

上述代码首先在页面加载完成后获取所有带有 lazy-load 类名的图片。然后,通过监听滚动、窗口调整大小和屏幕旋转等事件,在合适的时机检查图片是否需要加载。 如果图片已经进入可见区域内,就将 data-src 属性的值赋给 src 属性,并移除 lazy-load 类名,触发图片加载。

当然,这只是一个简单的示例代码,实际开发中可能需要处理更多的细节和边界情况。同时,也可以借助第三方的 JavaScript 库来简化懒加载的实现。

相关推荐
kyriewen11几秒前
我开发的 Chrome 扒图浏览器插件又更新了❗
前端·javascript·chrome·科技·ai
xyq20243 分钟前
Vue.js 实例
开发语言
敲代码的瓦龙9 分钟前
Android?碎片!!!
java·开发语言·android-studio
froginwe1110 分钟前
SVG 滤镜:全面解析与高效应用
开发语言
枫叶丹412 分钟前
【HarmonyOS 6.0】Data Augmentation Kit端侧问答模型:本地化智能问答的技术演进
开发语言·华为·harmonyos
醉舞经阁半卷书113 分钟前
LangGraph详解
开发语言·人工智能·python·深度学习·机器学习·自然语言处理
geovindu14 分钟前
go:Condition Variable Pattern
开发语言·后端·设计模式·golang·条件变量模式
晓得迷路了15 分钟前
栗子前端技术周刊第 128 期 - Rolldown 1.0、Vitest、Node.js 26.0.0...
前端·javascript·css
时光追逐者16 分钟前
一款基于 C# 开发的 Windows 10/11 系统增强工具,精简、优化、定制一站完成!
开发语言·windows·c#·.net
测试员周周17 分钟前
【AI测试功能6】功能测试的自动化率:哪些该自动、哪些必须人工——AI测试人机协作决策指南
开发语言·人工智能·python·功能测试·单元测试·自动化·测试用例