实现图片懒加载

  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="图片地址"/>
相关推荐
pas1361 小时前
40-mini-vue 实现三种联合类型
前端·javascript·vue.js
摇滚侠1 小时前
2 小时快速入门 ES6 基础视频教程
前端·ecmascript·es6
珑墨2 小时前
【Turbo】使用介绍
前端
军军君013 小时前
Three.js基础功能学习十三:太阳系实例上
前端·javascript·vue.js·学习·3d·前端框架·three
打小就很皮...4 小时前
Tesseract.js OCR 中文识别
前端·react.js·ocr
wuhen_n4 小时前
JavaScript内存管理与执行上下文
前端·javascript
Hi_kenyon4 小时前
理解vue中的ref
前端·javascript·vue.js
落霞的思绪6 小时前
配置React和React-dom为CDN引入
前端·react.js·前端框架
Hacker_Z&Q6 小时前
CSS 笔记2 (属性)
前端·css·笔记
Anastasiozzzz6 小时前
LeetCode Hot100 295. 数据流的中位数 MedianFinder
java·服务器·前端