图片懒加载

手动懒加载--利用指令的概念

在 src 目录下,新建文件夹 directives,再其中新建 lazy.js:

export default{

//这里的 el 就是使用了 v-lazy 指令的元素

mounted(el){

//保存图片地给 imgSrc

const imgSrc = el.src

//清空,这样就不会加载图片了

el.src ='';

//观察者 IntersectionObserver 是一个 api

// 参数 entries 是一个数组,里面的 isIntersecting 属性 ----flase 为在可视区域外, true 表示出现在可视区域,可以解构赋值[{isIntersecting}]

 

const observer = new IntersectionObserver(([{isIntersecting}])=>{

//元素出现在可视区域的时候以及离开可视区域的时候被触发(所以一开始就会先触发下)

if(isIntersecting){

//加载图片,把刚才保存的 imgSrc 赋值

el.src =imgSrc;

//图片加载玩,就得要停止观察了(这样图片就不会每次出现在可视区域或者离开都会触发了))

observer.unobserve(el)

}

 

})

//观察我锁定的元素

observer.observe(el)

}

}

然后,在 main.js 上全局加载

import lazy from './directives/lazy'

app.directive('lazy',lazy)

//这样就可以在组件上 v-lazy 使用了: <img v-lazy src="xxx.png">

posted @   青Fire  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示