实现图片懒加载

  1. 构建自定义指令
  2. 利用IntersectionObserver完成监测(此处我们直接用vueUse的useIntersectionObserver )
javascript 复制代码
//directive/index.js
// 图片一开始不加载,等到将要看到的时候再加载
import { useIntersectionObserver } from "@vueuse/core"
const imgLazy = {
	mounted(el) {
		//1.缓存当前的图片路径
		const catchSrc = el.src
		//2.把img.src变为占位图
		el.src = "占位图地址"
		//3.监听将要看到的
		const { stop } = useIntersectionObserver(el, ([{ isIntersecting }]) => {
			if(isIntersecting) {
				//4.渲染图片
				el.src = catchSrc
				//5.停止监听
				stop()
			}	
		})
	}
}

export default {
	// 在main.js中通过app.use使用
	install: (app) => {
		app.directive('imgLazy', imgLazy)
	}
}

组件中使用

javascript 复制代码
<img v-imgLazy src="图片地址"/>
相关推荐
IT_陈寒15 分钟前
Vue的watch把我坑惨了,原来要这样用才靠谱
前端·人工智能·后端
1-1=018 分钟前
Vue 3 模板语
前端·javascript·vue.js
用户76103044737124 分钟前
【转战智能眼镜开发】ROKID AIUI 小游戏 亚马逊标枪项目实战讲解
前端
风卿35 分钟前
看着AI写代码太孤独了,来欣赏星云吧:一个DSH 装饰插件
前端·javascript
牧艺44 分钟前
弹层不用再手算坐标了:CSS Anchor Positioning 从原理到可上线
前端·javascript·css
用户老李1 小时前
YOLO 目标检测自学教程 07:YOLOv3——多尺度预测
前端
moshuying1 小时前
ESP32 墨水屏金价牌(上):从点亮到把图片推过去
前端
李剑一2 小时前
别再抬杠,前端岗已经没了!无论前后端,我们最终都要成“全干”工程师
前端·面试
Highcharts.js2 小时前
Highcharts 仪表盘与速度仪图表库介绍
前端·信息可视化·仪表板·highcharts·图表开发·图表库·仪表可视化
愚坤2 小时前
前端真有意思,JS还能独立做项目?
前端·javascript·github