发布于 2026-01-06 0 阅读
0

图片延迟加载

图片延迟加载

为什么要采用懒加载呢?

当有人访问你的网站时,他们需要下载当前页面上使用的所有文件,包括图片。图片通常体积较大,而且并非所有人的网络连接都稳定可靠。因此,如果你的页面包含大量图片,就会严重拖慢页面加载速度,导致用户在页面加载完成前只能看到一片空白。

懒加载

解决这个问题的一个方法是延迟加载那些不会立即显示的图片,也就是所谓的懒加载。比如,你可能需要向下滚动才能看到它们,或者你有一个轮播图,而页面上只显示了第一张图片。这样做可以大大加快页面的初始加载速度。

最后我还附上了一个演示,展示了延迟加载的一个应用示例。

那么它是如何运作的呢?

其实很简单,只需以下四个步骤:

  1. 设置图片尺寸
  2. 将链接保存为 HTML 属性以供后续使用。
  3. 等待触发事件(例如,用户正在滚动页面,图片进入视图)。
  4. 显示图像

那么,让我们详细地逐一了解每个步骤。

设置尺寸

现在可能会有人问,为什么要这样做?

原因是,当您插入图片时,页面上的内容会“跳动”,或者更确切地说,会移动位置来为图片腾出空间。

这样看起来不太美观,为了避免这种情况,我们只需设置一个img与图片尺寸相同的空元素。这样,当图片加载时,它就已经有一些空余空间,其余内容就不会移动。

那么,尺寸数据从何而来?

如果你对要显示的图像进行硬编码,那么你可能也对图像尺寸进行了硬编码。

更常见的情况是,你通过调用服务器的 API 获取图片链接。通常的做法是,图片尺寸会和链接一起发送。所以,当你获取到链接后,只需用 JavaScript 设置尺寸即可。

保存链接以备后用

有一种特殊的 HTML 属性叫做数据属性。它们都以 `<data>` 开头。data-它们在 HTML 中的样子如下:

<span id="getThis" data-author="Dave">Some text</span>
Enter fullscreen mode Exit fullscreen mode

以下是在JS中访问它们的方法:

var spanNode = document.querySelector("#getThis");
var author = spanNode.dataset.author;
console.log(author); // Prints "Dave" to console
Enter fullscreen mode Exit fullscreen mode

触发事件

这要视具体情况而定。

这是页面上需要用户滚动才能看到的图片吗?如果是,则触发条件是图片进入视图。(文章末尾有演示如何实现此功能的示例)

如果图片在轮播图中,那么或许可以加载当前显示图片旁边的图片。

图片是否仅在点击按钮或其他操作时显示?如果是,那么这就是触发条件。

显示图像

要做到这一点,只需获取存储的链接,并将src图像的属性设置为该链接即可。

演示

哇,你居然把这些都读完了,恭喜!或者你可能直接跳过了,不管怎样,下面是滚动示例的实现方法:


除了在 dev.to 上发表文章外,我还在我的 Instagram 上发布关于相同主题的简短图文解释,如果您感兴趣,可以查看这篇关于本文的帖子:https://www.instagram.com/p/B6k7krBlAmT/

文章来源:https://dev.to/mikister/lazy-loading-images-16n8