图片懒加载

文章介绍了如何利用IntersectionObserverAPI来实现图片的懒加载,从而提高页面响应速度。在Vue组件中,当图片进入视口时,该方法会替换图片的src为实际地址,减少初次加载时的负担。示例代码展示了具体的实现过程。
摘要由CSDN通过智能技术生成

 在项目中经常会加载大量的图片,加载这些图片非常消耗页面响应速度,使用图片懒加载可以很好解决这个问题,

定义一个函数然后导出

使用 IntersectionObserver方法监听图片是否与视口交叉,交叉用自定义的图片地址替换原来的src

export default function(imgs){
   // 图片懒加载
   var ob = new IntersectionObserver((entries)=>{
    // console.log('交叉后运行');
    console.log(entries);
    for(let entry of entries){
      if(entry.isIntersecting){
        // console.log('交叉');
        let img = entry.target
        img.src = img.dataset.src
      }
    }
  },{
    root:null,//和谁交叉,默认null(视口),只可填父级元素
    rootMargin:"0%",//扩充交叉范围,必须百分比字符串
    threshold:0//交叉阈值,范围0-1,(0.5表示观察的元素一半进入视口才会触发)
  })
  imgs.forEach((img)=>{
    ob.observe(img)
  })
}

 vue组件使用可直接导入方法使用

Lorem Picsum 随机图库



<template>
   <div class="imgWrap">
    <img src="../assets/three.png" :data-src="'https://picsum.photos/300/500?r=' + id" alt=""  v-for="id in num" key="id" ref="imgs">
   </div>
</template>
<script setup>
import { ref ,onMounted} from 'vue'
import lazyimg from '../imagelazy'
let num = ref(100)
let imgs = ref(null)
onMounted(()=>{
  // 图片懒加载
  lazyimg(imgs.value)
})



</script>
<style scoped>
.read-the-docs {
  color: #888;
}
img{
  width: 200px;
  height: 160px;
}
.imgWrap{
  width: 820px;
  margin: 0 auto;
}

</style>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值