图片懒加载是一种简单的方法,可以显着提高网站的加载速度。图片懒加载的基本实现只需要添加一行代码。但是,有更先进的技术可以增强延迟加载体验。这些技术允许我们显示模糊的占位符并实现从占位符图像到完整图像的平滑过渡。在本文中,将解释我们需要了解的有关图片懒加载的所有信息,并指导如何创建这种高级图片懒加载效果。
从这种状态开始加载:

最终呈现出:

懒加载是一种延迟加载某些资源(例如图像)的技术,直到网页上实际需要它们为止。具体来说,当涉及到图像时,懒加载可确保在用户滚动到图像在屏幕上可见的位置之前不会下载图像。这种方法在网站性能方面提供了显着的好处,因为我们只需下载用户实际看到的图像。
懒加载对于包含大量图像的网站特别有价值,因为它允许我们避免不必要地下载不立即可见的图像,从而节省带宽。即使我们拥有快速的互联网连接或通常浏览具有小且优化图像的网站,也可能无法完全理解懒加载的优势。然而,对于许多用户尤其是那些互联网连接速度较慢的用户,懒加载的优势非常明显。图像通常是用户必须下载的最大资源,因此即使连接速度很快,懒加载也可以在减少网站的整体加载时间方面产生重大影响。
如前所述,实现图像延迟加载非常简单。它涉及向图像标签添加单个属性。通过将loading属性设置为lazy,我们就可以为该特定图像启用延迟加载。然后,浏览器根据图像与屏幕可见部分的接近程度来确定下载图像的最佳时间。
<img src="image.jpg" loading="lazy" />
这种基本延迟加载的最大缺点是,在下载图像之前,用户将看到图像应在的空白区域。
前面描述的基本懒加载技术可能会导致用户体验不佳,因为用户会在图像完全下载之前看到图像应在的空白区域。为了增强用户体验,本文的其余部分将解释如何利用延迟加载来显示模糊的占位符图像,直到下载完整图像。这种方法可确保用户在加载图像时获得图像的视觉呈现,从而带来更具吸引力和无缝的体验。
要生成模糊的占位符图像,我们可以创建原始图像的低分辨率版本。有多种方法可以实现这一点。例如,可以利用 BlurHash 等服务,使用 Figma 等设计工具手动调整图像大小,或使用 ffmpeg 等自动化工具。在本文中,我们将使用 ffmpeg,因为它提供灵活性和轻松的自动化。要生成占位符图像,可以在命令行中执行以下代码,确保位于图像所在的目录中:
ffmpeg -i imageName.jpg -vf scale=20:-1 imageName-small.jpg
在该命令中,imageName.jpg表示原始图像文件的名称,imageName-small.jpg表示生成的占位符图像文件的名称。scale=20:-1参数指定占位符图像的宽度应为 20 像素,同时保持原始图像的纵横比。我们可以根据自己的喜好调整宽度,但一般来说,20 像素的宽度适用于大多数图像,并且即使在较慢的互联网连接上也能确保近乎即时加载。使用此方法创建的占位符图像的大小通常小于 1kB。
生成小占位符图像后,下一步是创建一个 在 在此代码中,<div class="blurred-img">div>
CSS 中,可以定义类.blurred-img的样式来设置背景图像、调整其外观并确保正确显示:.blurred-img {
background-image: url(imageName-small.jpg);
background-repeat: no-repeat;
background-size: cover;
}
imageName-small.jpg指的是使用 ffmpeg 或任何其他方法生成的小占位符图像的文件名。background-repeat: no-repeat;属性可以防止图像重复,同时background-size: cover;确保它覆盖整个
为了确保模糊的占位符图像大小正确,我们可以在
001 ElasticSearch7.x 、IK分词器、Kibana 环境搭建、安装
Vue事件修饰符整理
【算法练习Day49】每日温度&&下一个更大元素 I
从 React 源码彻底搞懂 Ref 的全部 api
python安装imblearn一直找不到包的解决方法
6.5 XSS 获取 Cookie 攻击
「PHP系列」数组详解
专有网络VPC 是什么
2023/10/23 mysql学习
Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
MySQL-Seconds_behind_master的精度误差
[MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
Agent OS :五种驯服不确定性的范式
PortSwigger SQL注入LAB11
数据库即时编译JIT
[Begin]AI Learn Data Day 0
深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU