实现图片懒加载

  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="图片地址"/>
相关推荐
rzl023 分钟前
java web5(黑马)
java·开发语言·前端
Amy.Wang4 分钟前
前端如何实现电子签名
前端·javascript·html5
今天又在摸鱼7 分钟前
Vue3-组件化-Vue核心思想之一
前端·javascript·vue.js
蓝婷儿9 分钟前
每天一个前端小知识 Day 21 - 浏览器兼容性与 Polyfill 策略
前端
百锦再11 分钟前
Vue中对象赋值问题:对象引用被保留,仅部分属性被覆盖
前端·javascript·vue.js·vue·web·reactive·ref
jingling55515 分钟前
面试版-前端开发核心知识
开发语言·前端·javascript·vue.js·面试·前端框架
拾光拾趣录20 分钟前
CSS 深入解析:提升网页样式技巧与常见问题解决方案
前端·css
莫空000021 分钟前
深入理解JavaScript属性描述符:从数据属性到存取器属性
前端·面试
guojl22 分钟前
深度剖析Kafka读写机制
前端
FogLetter22 分钟前
图片懒加载:让网页飞起来的魔法技巧 ✨
前端·javascript·css