Vue3实现图片懒加载

这篇具有很好参考价值的文章主要介绍了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="" />

这样一个自定义全局指令实现图片懒加载就做好了。文章来源地址https://www.toymoban.com/news/detail-846073.html

到了这里,关于Vue3实现图片懒加载的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3图片懒加载借助插件vue3-lazy react中的图片懒加载 借助插件 react-lazyload

    vue2 就用 vue-lazyload 这个喽 安装 npm install vue3-lazy 在main.ts中配置 在页面中使用 1, 下载安装懒加载模块 2, 在src/assets/目录下放入懒加载占位图 placeholder.gif 3, 在需要使用懒加载的组件中导入懒加载模块和占位图 4, 在组件rander函数中创建占位图片标签img 5, 在组件模板中给需要懒

    2024年02月11日
    浏览(47)
  • 【Vue3+Ts project】认识 @vueuse/core 库

    根据屏幕宽度改变 实现动态获取盒子的宽度   目录 目标: 一、javascript实现 二、@vueuse/core 库实现 1.首先 window.innerWidth 获取当前屏幕宽度,然后将 盒子宽度 除 375 乘 当前屏幕宽度 2.将获取的动态盒子宽度赋值给 一个变量 3.将获取盒子逻辑代码封装函数 并在进入页面后组件加

    2024年02月09日
    浏览(39)
  • VueUse 是怎么封装Vue3 Provide/Inject 的?

    Provide 和 Inject 可以解决 Prop 逐级透传问题。注入值类型不会使注入保持响应性,但注入一个响应式对象,仍然有响应式的效果。 Provide 的问题是无法追踪数据的来源,在任意层级都能访问导致数据追踪比较困难,不知道是哪一个层级声明了这个或者不知道哪一层级或若干个层

    2024年02月03日
    浏览(45)
  • Vue3的vite中图片的动态加载

    vite官网的静态资源引入参考地址 new URL() + import.meta.url 注意:这里只能通过 …/…/ 这种方式去获取路径,无法通过@/assets

    2024年02月16日
    浏览(38)
  • vue3+elementplus前端生成图片验证码

    1、安装 使用npm i identify --save 或者 yarn add identify --save 2、新建vue组件components/identify/identify.vue 3、一般是登录页面用到这个,在你的登录页面的from表单的相应位置加上填写验证码的html 4、在script下引入组件,并编写方法 5、效果  

    2024年01月20日
    浏览(50)
  • Vue3最佳实践 第六章 Pinia,Vuex与axios,VueUse 4(axios)

      axios 是一个基于 Promise 的 HTTP 客户端,不仅可以与 vue.js 一起使用,还可以与其他前端框架以及后端 Node.js 一起使用。当你想从包括后端服务器在内的外部服务获取数据时,可以使用axios 中的方法很方便的获得数据内容。在本文档中,我们将介绍如何在 vue.js 版本 3 的环境

    2024年02月07日
    浏览(38)
  • 【vue3】前端上传图片的格式大小限制和压缩

    目录 前言 对上传图片进行格式大小限制 压缩上传图片 上篇文章中研究了如何使用双token机制,在此篇中就暴露了一些问题:当accesstoken过期后,直到拿到最终想要得到的数据,期间需要经历三次请求——第一次请求,拿到accesstoken过期的消息——第二次携带refreshtoken发起请求

    2024年02月06日
    浏览(75)
  • Vue3+cropperjs 实现图片裁剪功能

    在以上代码中,我们使用 props 属性,用于传入裁剪器的配置项和需要裁剪的图片地址。在 onMounted 生命周期钩子中,使用传入的 props 创建裁剪器实例,并将图片元素和一些裁剪选项传入。 在 cropImage 函数中,获取裁剪后的图片数据URL,并使用 emit 方法触发 updateImageSrc 事件,

    2024年02月05日
    浏览(38)
  • Vue3 实现产品图片放大器

    Vue3 实现类似淘宝、京东产品详情图片放大器功能 环境:vue3+ts+vite 1.创建picShow.vue组件 2.在其他页面引用组件picShow.vue 效果:

    2024年02月14日
    浏览(51)
  • Vue3.0实现图片预览组件(媒体查看器)

    前言: 最近项目中有个场景,一组图片、视频、音频、文件数据,要求点击图片可以放大预览,左右可以切换音视频、文件,支持鼠标及各种键控制 缩放,左右旋转,移动等功能,整理了一下,封了个组件,注释很全面,每块地方都有讲解,可以直接拿到项目中使用 先看下

    2023年04月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包