图片懒加载

图片懒加载的原理和实例

原理

图片懒加载是一种前端优化技术,当用户滚动页面时,只有当图片出现在视口中时,图片才会开始加载。这种延迟加载可以减少页面的初始加载时间,并提高页面的性能和用户体验。注意:仅初始的加载时间哦!

图片懒加载的原理是利用 JavaScript 监听用户的滚动事件。当用户滚动到页面中的某个图片时,JavaScript 会检查该图片是否在视口中。如果是,那么图片的地址就会被加载到图片标签的 src 属性中,从而触发图片的加载。如果不是,那么图片的地址就不会被加载,直到用户滚动到该图片位置时才会被加载。

通常,图片懒加载使用占位符或小的低分辨率的图片代替真实的图片,以保持页面布局的一致性,并让用户知道这里有一张图片将要加载。一旦真实的图片加载完成,它将替换占位符或低分辨率图片,从而提高页面的质量。

实例

让我们编写一小段html代码,有一个页面,其中包含多张图片。在不使用图片懒加载的情况下,所有图片都会在页面加载时一次性加载,这可能会导致页面加载速度变慢。

现在我们来使用图片懒加载来优化页面。我们可以将所有图片的 src 属性设置为一个占位符(例如 data-src),然后使用 JavaScript 监听窗口滚动事件。每当用户滚动时,我们检查所有的图片是否已经进入视口,如果是,则将 data-src 属性替换为 src 属性,这样图片就会开始加载。

data-\* 全局属性形成一类称为自定义数据属性的属性,它允许通过脚本在 HTML及其 DOM 表示形式之间交换专有信息。

以下是一个简单的示例代码,用于实现图片懒加载:

<!-- 在 img 标签的 src 属性中使用占位符 -->
<img data-src="image1.jpg" alt="Image 1">
<img data-src="image2.jpg" alt="Image 2">
<img data-src="image3.jpg" alt="Image 3">
<!-- 省略其它图片 -->

<script>
  // 使用 JavaScript 实现图片懒加载
  const images = document.querySelectorAll('img[data-src]');

  function lazyLoad() {
    images.forEach((image) => {
      if (isInViewport(image)) {
        image.setAttribute('src', image.getAttribute('data-src'));
        image.removeAttribute('data-src');
      }
    });
  }

  function isInViewport(element) {
    const rect = element.getBoundingClientRect();
    return (
      rect.top >= 0 &&
      rect.left >= 0 &&
      rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
      rect.right <= (window.innerWidth || document.documentElement.clientWidth)
    );
  }

  // 监听窗口滚动事件,并触发图片懒加载函数
  window.addEventListener('scroll', lazyLoad);
</script>

在上面的代码中,我们首先选取了所有带有 data-src 属性的图片,并定义了一个名为 lazyLoad 的函数,它会在滚动事件发生时被调用。在 lazyLoad 函数中,我们检查每个图片是否在视口中,并根据需要将 data-src 属性替换为 src 属性。最后,我们将 lazyLoad 函数绑定到窗口滚动事件上,以便实现图片懒加载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值