手动懒加载--利用指令的概念
在 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">
vue图片懒加载
原创
©著作权归作者所有:来自51CTO博客作者lenglingx的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Vue图片懒加载vue-lazyload-使用vue.js javascript 原力计划 预加载 图片加载
-
element ui 图片懒加载的源码 vue图片懒加载怎么实现
作者:lzg9527在类电商类项目,往往存在大量的图片,如 banner 广告图,菜单导航图,美团等商家列表头图等。图片众多以及图片体积过大往往会影响页面加载速度,造成不良的用户体验,所以进行图片懒加载优化势在必行。为什么要进行图片懒加载我们先来看一下页面启动时加载的图片信息。 如图所示,这个页面启动时加载了几十张图片(甚至更多),而这些图片请求几乎是并发的,在 Chrome 浏览器,最多支持
element ui 图片懒加载的源码 vue 图片拖动加载 类似于地图 vue 自定义指令 vue自定义指令 vue获取不到offsetheight -
vue + vue-lazyload 实现图片懒加载
1.安装 2.配置 main.js 3.调用 .
vue vue 自定义组件 懒加载 预加载 加载图片