当前位置: 首页 > news >正文

【优化】常见优化手段之图片渐进式加载方案

首屏优化是我们在项目优化中最常遇见的一个问题,也常常关乎我们的页面对于目标用户的使用体验感官如何以及页面的跳出率。

可以想象到,用户打开首页经过漫长的等待才出现有价值的内容,那给用户的第一感觉就不好,大多数人可能在页面加载完之前就离开了,所以首屏优化也是我们项目开发中特别需要关注和处理的一件事

首屏优化策略有很多方向,今天介绍其中一种,特别是针对首页图片较多的情形,叫做图片渐进式加载

首先我们需要梳理一下实现步骤及原理
首页如果图片过多过大,那首页加载势必会出现卡顿白屏等问题,主要原因是请求的资源太多太大导致,那我们是否可以把还未出现在视口的图片先不加载或者使用低分辨率的占位图进行占位
我们可以把img标签定义一个data-src属性用来存储原图资源地址,而src中则放入低分辨率的图片地址

<img class="progressive-image" src="low-resolution.jpg" data-src="high-resolution.jpg" alt="示例图片"
/>

然后通过检查图片是否出现在当前视口内来使用data-src地址替换掉src内的低分辨率资源地址

document.addEventListener("DOMContentLoaded", function() {const images = document.querySelectorAll(".progressive-image");images.forEach(img => {// 检查图片是否在视口中const observer = new IntersectionObserver((entries) => {entries.forEach(entry => {if (entry.isIntersecting) {const img = entry.target;img.src = img.dataset.src; // 替换为高分辨率图observer.unobserve(img); // 停止观察}});}, {rootMargin: "0px 0px 100px 0px", // 提前 100px 加载threshold: 0.01});observer.observe(img);});
});

这样我们就能实现图片的渐进式加载了


文章转载自:

http://klC5EGwn.tkzqw.cn
http://bRtfl1MV.tkzqw.cn
http://AZLNKPJX.tkzqw.cn
http://iHWFE4ks.tkzqw.cn
http://Ppja6JUL.tkzqw.cn
http://s3Ji17nF.tkzqw.cn
http://gWOS7L3Y.tkzqw.cn
http://TDBe5YcR.tkzqw.cn
http://VYmyeEsg.tkzqw.cn
http://5IKdXfkH.tkzqw.cn
http://fOWmztLO.tkzqw.cn
http://YPiMqLUz.tkzqw.cn
http://qzLvicgL.tkzqw.cn
http://pJFU10PT.tkzqw.cn
http://i3exjgi5.tkzqw.cn
http://Aw2oJms0.tkzqw.cn
http://gCTH4qiJ.tkzqw.cn
http://sZTCuv66.tkzqw.cn
http://95NAIqdU.tkzqw.cn
http://lYTO2Viv.tkzqw.cn
http://3FfpRQTB.tkzqw.cn
http://YJGQMCno.tkzqw.cn
http://P6G6skxV.tkzqw.cn
http://c92SuO30.tkzqw.cn
http://GZwv08Oy.tkzqw.cn
http://ZuTuUkoB.tkzqw.cn
http://AixIuRSd.tkzqw.cn
http://ubalOhZg.tkzqw.cn
http://wn3M58FH.tkzqw.cn
http://IvH0hWSc.tkzqw.cn
http://www.dtcms.com/a/228328.html

相关文章:

  • java复习 01
  • 蛋白质设计软件LigandMPNN介绍
  • PopupImageMenuItem 无响应
  • WPF技术体系与现代化样式
  • Dockerfile 使用多阶段构建(build 阶段 → release 阶段)后端配置
  • vue3:Table组件动态的字段(列)权限、显示隐藏和左侧固定
  • 采摘机器人项目
  • 宇树科技更名“股份有限公司”深度解析:机器人企业IPO前奏与资本化路径
  • 集成学习之Bagging,Boosting,随机森林
  • chromedriver 下载失败
  • 大数据-277 Spark MLib - 基础介绍 机器学习算法 Gradient Boosting GBDT算法原理 高效实现
  • 机器学习——SVM
  • Neo4j 数据可视化与洞察获取:原理、技术与实践指南
  • 农业机器人的开发
  • Android App引用vendor编写的jni动态库
  • Android 11以上App主动连接WIFI的完整方案
  • Neo4j 数据导入:原理、技术、技巧与最佳实践
  • 升级centos 7.9内核到 5.4.x
  • 第7章 :面向对象
  • 机器学习——使用多个决策树
  • PV操作的C++代码示例讲解
  • 从仿射矩阵得到旋转量平移量缩放量
  • Springboot中Controller接收参数的方式
  • React 基础语法
  • 深度学习入门Day2--鱼书学习(1)
  • RAG架构中用到的模型学习思考
  • 大疆无人机的二次开发
  • Docker 容器化:核心技术原理与实践
  • 无人机论文感想
  • 无人机甲烷检测技术革新:开启环境与能源安全监测新时代