首页 > 其他分享 >vue3 图片懒加载

vue3 图片懒加载

时间:2023-07-12 21:33:57浏览次数:46  
标签:el const useIntersectionObserver app binding lazyPlugin vue3 加载 图片

使用vue第三方库 useIntersectionObserver 创建文件 directives/index.js 导入第三方库

import { useIntersectionObserver } from '@vueuse/core'

export const lazyPlugin = {
  install(app) {
    app.directive('img-lazy', {
      mounted(el, binding) {
        // el:指令绑定的那个元素 img
        // binding: binding.value 指令等于后面绑定的表达式的值
        // console.log(el, binding.value)
        // stop防止重复渲染
        const { stop } = useIntersectionObserver(
          el,
          ([{ isIntersecting }]) => {
            // console.log(isIntersecting)
            if (isIntersecting) {
              el.src = binding.value
              stop()
            }
          }
        )
      }
    })
  }
}
main.js引入 挂载
import { lazyPlugin } from './directives'
import App from './App.vue'

const app = createApp(App)
app.use(lazyPlugin)
使用 在需要懒加载的图片标签上添加v-img-lazy属性(注意不需要绑定src了) index.vue
<img v-img-lazy="item.picture" alt="" />
 

标签:el,const,useIntersectionObserver,app,binding,lazyPlugin,vue3,加载,图片
From: https://www.cnblogs.com/happy-p/p/17548910.html

相关文章

  • Vue3 实现点击菜单实现切换主界面组件
    子组件菜单组件 MenuComponent列表组件 ExtTelListComponent状态组件 ExtTelStatusComponent父组件界面主体MainIndex 实现功能:在 MainIndex中引入三个子组件 通过点击 菜单组件切换加载 列表组件和状态组件 实现效果一、菜单组件 MenuComponent<......
  • Vue3+.net6.0 六 条件渲染
    v-if,v-else-if,v-else控制元素是否渲染,不满足条件的时候不会有相应元素。<divv-if="type==='A'">A</div><divv-else-if="type==='B'">B</div><divv-else-if="type==='C'">C&l......
  • vue3自定义指令 拖拽 与拖拽变大小
    directives:{drag:{mounted:(el,binding)=>{constdragDom=el;conststy=dragDom.currentStyle||window.getComputedStyle(dragDom,null);el.parentElement.style.cursor='move';......
  • Vue3+.net6.0 五 类和样式绑定
    Vue3关于样式的处理跟Vue2是一样的,常用的有以下几种。1.绑定属性html部分:<div:class="{active:isActive}"></div>js部分:data(){return{isActive:true}}当isActive值为true时,div应用这个active样式,反之亦然。 2.对象方式绑定<div:class="cla......
  • 19:vue3 依赖注入
    1、通过Prop逐级透传问题(传统老的方法只能逐级传递) 传统方式代码如下:App.vue1<template>2<h3>祖宗</h3>3<Parent:msg="msg"></Parent>4</template>56<script>7importParentfrom"./components/Parent.vue"......
  • 封装图片处理工具类,实现图片的裁剪、压缩、图片水印、文字水印、多行文字水印等功能
    目录一、前言二、工具类的依赖和简单介绍1、添加依赖2、简单的使用3、加载需要处理的图片4、添加图片处理规则4.1Builder的方式4.2使用规则工厂的方式5、输出处理后的图片三、使用方式1、图片裁剪图片裁剪规则实体类1.1按长宽裁剪1.1.1示例代码1.1.2实现效果1.2按比例裁剪1......
  • mybatis的延时加载
    https://www.bilibili.com/video/BV1V24y1V7aJ/?spm_id_from=333.337.search-card.all.click&vd_source=46d50b5d646b50dcb2a208d3946b1598https://www.bilibili.com/video/BV1Tb4y1p7rh/?spm_id_from=333.337.search-card.all.click&vd_source=46d50b5d646b50dcb2a2......
  • laraveladmin 上传图片通过filesystems到其他网站提供的接口
    要通过Laravel的Filesystems将图片上传到其他网站提供的接口,可以按照以下步骤进行操作:首先,确保你已经在Laravel中配置好了Filesystems。你可以在config/filesystems.php文件中定义一个新的磁盘配置,用于上传图片到其他网站的接口。'disks'=>[//其他磁盘配置.........
  • 文字生成图片工具有哪些值得推荐
    AI生成图片最近是越来越火了,越来越多的AI生成图片工具上线。本文就给你推荐4款非常好用的AI生成图片工具,避免你碰雷。即时灵感「即时灵感」是通过文字描述等方式生成精致图像的AI绘图工具。输入文字,即可将创意变为现实!​「即时灵感」适用于每一位想在AI......
  • 图片平滑器
    图像平滑器是大小为 3x3的过滤器,用于对图像的每个单元格平滑处理,平滑处理后单元格的值为该单元格的平均灰度。每个单元格的 平均灰度定义为:该单元格自身及其周围的8个单元格的平均值,结果需向下取整。(即,需要计算蓝色平滑器中9个单元格的平均值)。如果一个单元格周围存......