Vue3实现图片懒加载

通过第三方插件VueUse实现图片懒加载。

1、需要安装依赖
npm i @vueuse/core
2、定义懒加载的插件

xxx/index.js

// useIntersectionObserver:响应式监听目标元素的可见性。
import { useIntersectionObserver } from '@vueuse/core'

// 定义懒加载插件
export const lazyPlugin = {
    install: (app) => {
        /*
			定义全局指令
			img-lazy:指令名称
		*/
        app.directive('img-lazy', {
            // 指令的定义
            mounted(el, binding) {
                /*
                    el:指令绑定的那个元素 img
                    binding:binding.value指令绑定的值
                */
                const { stop } = useIntersectionObserver(
                    el,
                    ([{ isIntersecting }]) => {
                    	// 如果是在当前视口下则赋值
                        if (isIntersecting) {
                            el.src = binding.value;
                            stop(); //图片加载完毕停止监听
                        }
                    },
                )
            }
        })
    },
}
3、在main.js文件内注册指令
// 引入懒加载指令插件并注册
import { lazyPlugin } from "@/directives/index"

app.use(lazyPlugin)

app.mount('#app')
4、使用

注册好指令就可以在标签上使用,使用指令时需要加v-。

<img v-img-lazy="picture" alt="" />

这样一个自定义全局指令实现图片懒加载就做好了。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值