vue自定义懒加载指令

vue自定义图片懒加载指令 vue中封装自定义指令,该指令主要功能是到达指定区域加载图片,若已加载过就不再加载 立即下载

一、介绍

懒加载(Load On Demand)——也称为延迟加载,它能够在用户滚动页面的时候自动获取更多的数据,而新得到的数据不会影响原有数据的显示,同时最大程度上减少服务器端的资源耗用。其关键就是,在图片没有进入可视区域时,先不给的src赋值,这样浏览器就不会发送请求了,等到图片进入可视区域再给src赋值。

二、自定义指令

vue3.0写法

1、安装插件
yarn add @vueuse/core -S

2、创建lazy-image.js文件(名称自己取)

3、编写实现代码如下

import { useIntersectionObserver } from '@vueuse/core'
export default {
  install(app) {
    app.directive('lazy', {
      mounted(el, binding) {
        el.src = 'https://img1.halobear.com/upload_page/FttW92R6o7V11_tP9RTUiDv6vlBL.png' // 默认图片(占位图)
        const { stop } = useIntersectionObserver(
          el,
          ([{ isIntersecting }]) => {
            if (isIntersecting) {
              // 可见区域
              el.onerror = () => {
                // 当图片加载失败 设置为默认图片
                el.src = 'https://img1.halobear.com/upload_page/FttW92R6o7V11_tP9RTUiDv6vlBL.png'
              }
              el.setAttribute('class', 'fadeIn cover')   // 给元素添加自定义class
              stop() // 可见区域后 下次不在执行监听
              el.src = binding.value // 设置传过来的地址去请求
            }
          },
          { threshold: 0 }
        ) // 当可视区域宽高为0就触发
        // console.log(el, binding.value)
      }
    })
  }
}

4、在main.js中引入

import directive from '@/common/waterfall/lazy-image

createApp(App).use(router).use(directive).mount('#app')

三、使用方法

<img  class="cover"
      :key="it.thumb_path"
       src="https://img1.halobear.com/upload_page/FttW92R6o7V11_tP9RTUiDv6vlBL.png"
       v-lazy="it.thumb_path"
      :style="{ height: `${it.imageHeight}rem` }"
  />

四、实现效果

网络差的情况下也会显示占位图。
在这里插入图片描述
在这里插入图片描述

实现一个Vue自定义指令懒加载的方法示例 在项目中如果有大量的图片需要加载的时候,就可以考虑使用懒加载了,懒加载其实就是监听浏览器的滚动,当滚动到一定的范围的时候就将图片的真实路径赋给src,然后取消监听。实现的方法也比较简单,可以通过懒加载的插件实现,也可以手写,手写通过vue自定义指令来实现,一般情况自定义指令用的也不多,比较vue自带的就够用了,大型复杂的项目的可能用的多。 什么是图片懒加载 当我们向下滚动的时候图片资源才被请求到,这也就是我们本次要实现的效果,进入页面的时候,只请求可视区域的图片资源这也就是懒加载。 比如我们加载一个页面,这个页面很长很长,长到我们的浏览器可视区域装不下,那么懒加载就是优先加载可视区域的内容,其 立即下载

相关推荐

LangChain开发避坑指南:为什么Pylance总提示‘无法解析导入‘?实测7种修复方案

本文深入解析了在VS Code中使用LangChain开发时,Pylance频繁提示‘无法解析导入’的根本原因——Python解释器与语言服务器的环境路径不一致。文章提供了从基础排查到深度配置的7种实测修复方案,包括切换解释器、配置extraPaths、使用pyrightconfig.json等,旨在帮助开发者彻底解决此问题,提升AI应用开发效率。

weixin_28826521的博客 444

Vue进阶——懒加载v-lazy

图片懒加载是一种网页性能优化技术,它允许在页面加载时仅加载可见区域内的图像,从而减少初始页面加载时间和网络带宽使用。这意味着图像只会在用户滚动或浏览到它们时才会被加载,而不是在页面一开始就全部加载。Vue.js通常不提供直接的图像懒加载功能,但可以使用一些库和插件来实现图像懒加载。其中,vue-lazyload 是一个常用的Vue.js插件,可以实现懒加载。使用 Composition API 来管理组件的状态。

秋书一叶的博客 4968

[调参神器]使用VOFA+上位机进行PID调参(附下位机代码)

​ 简单地来说,VOFA+是一个超级串口助手,除了可以实现一般串口助手的串口数据收发,它还可以实现数据绘图(包括直方图、FFT图),控件编辑,图像显示等功能。​ 如果只是想要用VOFA+来进行数据绘图,直接使用一个波形图控件就行,但是如果想要把VOFA+当作一个长期使用的调参助手,我们最好设置一下控件。VOFA+简洁好用,但是又有点太简洁了,部分体验并不是很好(比如不能调整控件大小,保存文件不太方便等),所以如果学有余力,推荐自己用QT/PyQT写上位机。接下来,我们要将指令中的数据提取出来。

qq_56089182的博客 4万+

vue自定义指令-图片懒加载

vue自定义图片懒加载

老古懂的博客 603

从星形到三角形:永磁同步电机FOC+SVPWM控制的相位偏移与扇区重构

本文深入探讨了将FOC+SVPWM控制方案从星形接法永磁同步电机移植到三角形接法时遇到的核心挑战。文章重点解析了由绕组连接方式差异导致的30度相位偏移问题,并详细阐述了如何为此重构扇区判断逻辑、矢量作用时间计算以及电流采样变换,为工程师提供了从理论到实践的完整移植指南。

ujm5678901的博客 544

大厂案例:快手AI人才管理系统的架构设计与效果

凌晨两点刷简历的HR、说不清“团队离职率高”原因的业务leader、不知道“该学什么”的员工——这些人力资源场景中的“痛点”,曾是快手高速增长期的真实写照。当员工规模从几千扩张到几万,传统HR系统的“经验驱动”模式彻底失效。2021年,快手启动AI人才管理系统建设,用“数据+算法”重构招聘、培养、绩效、留存全流程。本文将拆解这套系统的架构设计逻辑核心技术实现,以及真实业务效果AI如何让HR从“事务执行者”变成“战略伙伴”?

大模型应用工坊 1711

vue——实现数据懒加载(可视区域内才进行数据加载)——技能提升

vue——实现数据懒加载(可视区域内才进行数据加载)——技能提升

yehaocheng520的博客 6720

FFmpeg入门详解之110:RTSP协议讲解

TCP/IP 协议体系中的一个应用层协议,该协议定义了一对多应用程序如何有效地通过 IP 网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。HTTP与RTSP相比,HTTP传送HTML,而RTSP传送的是多媒体数据。正在上传…重新上传取消RTSP是基于文本的协议,采用ISO10646字符集,使用UTF-8编码方案。行以CRLF中断(\r\n:10,13:0x0A,0x0D),包括消息类型、消息头、消息体和消息长。

福优学苑@音视频+流媒体 2529

vue中使用懒加载

vue中使用懒加载

qq_60690665的博客 1693

如何在Ubuntu 22.04系统上安装CUDA 12.9

本文提供Ubuntu22.04系统上安装CUDA12.9的简明指南:1)确认已安装适配575驱动;2)清理旧版本后安装必需依赖库;3)通过deb包方式添加英伟达源并安装CUDA12.9工具包;4)配置环境变量;5)通过nvcc-V和nvidia-smi命令验证安装。文中包含常见问题解决方法及多显卡使用说明,全程约需10分钟完成安装。

2501_93651177的博客 1480

1.1什么是Zephyr?与FreeRTOSRT-Thread对比

我自己的项目里,三个系统都用过。这个芯片的原厂BSP哪个OS做得最靠谱?(实测,别看广告)项目核心需求是不是某个OS的“长板”?(别为了10%的功能牺牲90%的稳定性)团队三个月后能不能愉快地维护代码?(开发体验影响长期生产力)最后送一句干货:选型定不下来时,拿一块项目用的开发板,分别用三个OS跑同一个demo(比如按键控制LED+串口打印)。移植过程遇到的问题、代码看起来舒不舒服,你的直觉会告诉你答案。嵌入式没有完美解,只有适合当下的解。选好了,就踏实地写代码;

m0_50546716的博客 653

vue 实现懒加载

懒加载,也称为延迟加载,是一种将资源(如图片、组件、代码等)推迟到需要的时候再加载的策略。在 Vue 中,懒加载通常涉及到组件和图片的加载。

When you can't win by being better, you can win by being different. 7265

Qt Installer Framework 简单使用

qt installer framework 简单使用

qq_42815643的博客 2576

Vue3实现图片懒加载及自定义懒加载指令

图片懒加载是一种常见性能优化的方式,它只去加载可视区域图片,而不是在网页加载完毕后就立即加载所有图片,能减少很多不必要的请求,极大的提升用户体验。图片懒加载的实现原理:在图片没进入可视区域的时候,只需要让 img 标签的 src 属性指向一张默认图片,在它进入可视区后,再替换它的 src 指向真实图片地址即可。本文就分享一下在vue3中实现图片懒加载的几种方式,包括使用插件以及自定义v-lazy指令。

~~~ 1万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Vue自定义指令及实现图片懒加载指令

一. 速识概念:   在我们使用 Vue 的过程中,遇到了很多方便我们操作的vue内置指令,以 v-xxx 表示。比如有 v-module,v-for,v-if,v-show 等等,每个指令都能实现一些相对应的功能。但是,在实际的开发过程中,可能这些内置指令并不能满足所有的需求,这时候,就需要用到 Vue 给我们提供的一个强大又灵活的功能「 自定义指令 」。   同样,vue自定义指令可以分为全局注册指令和局部注册指令。下面我将以最简单的例子带你认识vue自定义指令。 二.全局注册指令:   比如,我们想要

你好呀,很高兴你在看这里~ 3362

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Vue自定义指令实现懒加载

Vue自定义指令实现图片懒加载

qq_45662523的博客 751

Vue3 的自定义指令图片懒加载

以下文章来源于老黄的前端私房菜 ,作者黄轶黄老师懒加载图片指令完整的指令实现,可以在 vue3-lazy 中查看, 在我的课程《Vue3 开发高质量音乐 Web app》中也有应用。懒加载图片指令的核心是应用了API 来判断图片是否进入可视区,该特性在现代浏览器中都支持,但 IE 浏览器不支持,此时可以通过监听图片可滚动父元素的一些事件如scrollresize等,然后通过一些 DOM 计算来判断图片元素是否进入可视区。不过 Vue3 已经明确不再支持 IE,那么仅仅使用API 就足够了。

pingguocu3的博客 1204

vue3中的懒加载和自定义指令

1.懒加载: 应用场景:下拉页面加载页面数据时,立即去加载数据,效率较低 目标(效果):当组件进入可视区域之后才去发请求加载数据,没有进入可视区域前,ajax请求是不发的 思路: 如何判断一个dom元素是否进入了可见区域? 传统方式:获取dom的位置,手动判断。(距离页面顶部的距离 比较 滚动条卷起的高度,还要考虑元素自己的高度 ) 现在:直接判断元素进入可视区域的比例 (使用第三方@vueuse/core 中的 useIntersectionObserver ) vueuse官网: http

接着奏乐接着舞的博客 2454

vue自定义指令之图片懒加载

先将真实图片地址置为空或者预先指定的图片,在图片进入可视区域时,再将图片替换为真实地址。图片进入可视区域的监听。

小多的博客 706

Vue自定义指令----图片懒加载

/ 自定义懒加载指令 const vLazy = {} // 通过new IntersectionObserver判断元素是否到达可视区域;//entries[0].intersectionRatio<=0表示元素没有到达可视区域;// entries[0].intersectionRatio>0表示元素到达可视区域;} , {root : null , // 默认是浏览器视口 rootMargin : '0px' , threshold : 0 // 0表示元素进入可视区域就触发 })

weixin_44388086的博客 504

[vue3]自定义指令实现图片的懒加载

官方文档-自定义指令官方示例// 在模板中启用 v-focusfocus指令钩子:// 在绑定元素的 attribute 前// 或事件监听器应用前调用// 下面会介绍各个参数的细节},// 在元素被插入到 DOM 前调用// 在绑定元素的父组件// 及他自己的所有子节点都挂载完成后调用// 绑定元素的父组件更新前调用// 在绑定元素的父组件// 及他自己的所有子节点都更新后调用// 绑定元素的父组件卸载前调用// 绑定元素的父组件卸载后调用el:指令绑定到的元素。

linsiraixuexi的博客 1430

vue自定义指令实现图片懒加载

在vue项目开发过程中,为了优化体验经常会有给图片添加懒加载的功能。vue给我们提供了自定义指令,通过自定义指令,我们可以方便快捷的实现改需求。 什么是vue自定义指令? 具体见vue官方文档——vue自定义指令 封装自定义指令你需要知道: 指令的定义,需要用到Vue.directive方法(以注册一个v-focus为例): // 注册一个全局自定义指令 `v-focus` Vue.directive('focus', { // 当被绑定的元素插入到 DOM 中时…… inserted: f.

V_AYA_V的博客 641

vue3自定义指令(图片懒加载)

vue3,自定义指令

q893668680的博客 620

图片懒加载及Vue自定义图片懒加载指令

/ 也可以这样判断:imgs[i].offsetTop

pscool的博客 993

vue3自定义指令懒加载

Vue 3 中的自定义指令是可以用来实现懒加载的。 要使用自定义指令来实现懒加载,你需要进行以下步骤: 在项目中安装 IntersectionObserver 库。它可以帮助你监听元素是否进入可视区域。 npm installintersection-observer ...

weixin_42600128的博客 275

实现一个Vue自定义指令懒加载

http://caibaojian.com/vue-image-lazyload.html

逍湘子 436
上一篇: vue实现瀑布流效果
下一篇: 【PDF.js】PDF文件预览
伦为JAY下囚
博客等级 码龄7年 52粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值