关于JavaScript前端图片懒加载最简单的两种方法

18 篇文章 1 订阅

图片懒加载的实现思路:当后端返回给前端图片的链接后,将正确的链接放在img标签的一个隐藏属性里,当img标签可见时赋予正确的属性,这时才开始加载图片。

当所展示的列表数据过多时,这种方法很有效。

方法一:

把正确的链接设置到一个隐藏的属性里,可见时转换

当元素可见时,将 data-src 里的数据写到 src 里(可利用 DataSet API 实现)
<img data-src="dumogu.jpg">
img.src = img.datset.src;

判断元素是否可见也有很多解决方法,下面这种最简单

//InterpObserver观察一个DOM元素的可见性,监听其位置的变化。
const observer = new IntersectionObserver((changes) => {
  // changes: 目标元素集合,遍历添加监听回调
  changes.forEach((change) => {
    // 当元素可见时进行转换
    if (change.isIntersecting) {
      const img = change.target;
      img.src = img.dataset.src;
      observer.unobserve(img); //替换后停止观察
    }
  });
});
//img: 你想要观察的img元素
observer.observe(img);

方法二:

浏览器已经实现了图片懒加载这个功能,加上一个属性就行了

<img src="dumogu.jpg" loading="lazy">

关于 loading 属性的文章也可以查看 Native image lazy-loading for the web!

两种方法虽然简单,但是兼容性不是很好,在此仅作学习记录用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值