vue如何实现图片懒加载
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章将为大家详细讲解有关vue如何实现图片懒加载,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。图片懒加载图片懒加载就是对于有很多图片的页面,为了提高页面加载速度
千家信息网最后更新 2025年01月20日vue如何实现图片懒加载
这篇文章将为大家详细讲解有关vue如何实现图片懒加载,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
图片懒加载
图片懒加载就是对于有很多图片的页面,为了提高页面加载速度,只加载可视区域内的图片,可视区域外的等到滚动到可视区域后再去加载
这个功能一些 UI 框架都有自带的,如果没有呢?
推荐一个第三方插件 vue-lazyload
npm i vue-lazyload -S// main.jsimport VueLazyload from 'vue-lazyload'Vue.use(VueLazyload)// 接着就可以在页面中使用 v-lazy 懒加载图片了
或者自己造轮子,手动封装一个自定义指令,这里封装好了一个兼容各浏览器的版本的,主要是判断浏览器支不支持 IntersectionObserver API,支持就用它实现懒加载,不支持就用监听 scroll 事件+节流的方式实现
const LazyLoad = { // install方法 install(Vue, options) { const defaultSrc = options.default Vue.directive('lazy', { bind(el, binding) { LazyLoad.init(el, binding.value, defaultSrc) }, inserted(el) { if (IntersectionObserver) { LazyLoad.observe(el) } else { LazyLoad.listenerScroll(el) } }, })}, // 初始化 init(el, val, def) { el.setAttribute('data-src', val) el.setAttribute('src', def)}, // 利用IntersectionObserver监听elobserve(el) { var io = new IntersectionObserver((entries) => { const realSrc = el.dataset.src if (entries[0].isIntersecting) { if (realSrc) { el.src = realSrc el.removeAttribute('data-src') } } }) io.observe(el)}, // 监听scroll事件listenerScroll(el) { const handler =LazyLoad.throttle(LazyLoad.load, 300) LazyLoad.load(el) window.addEventListener('scroll', () => { handler(el) })}, // 加载真实图片 load(el) { const windowHeight =document.documentElement.clientHeight const elTop = el.getBoundingClientRect().top const elBtm = el.getBoundingClientRect().bottom const realSrc = el.dataset.src if (elTop - windowHeight < 0 && elBtm > 0) { if (realSrc) { el.src = realSrc el.removeAttribute('data-src') } }}, // 节流 throttle(fn, delay) { let timer let prevTime return function (...args) { const currTime = Date.now() const context = this if (!prevTime) prevTime = currTime clearTimeout(timer) if (currTime - prevTime > delay) { prevTime = currTime fn.apply(context, args) clearTimeout(timer) return } timer = setTimeout(function () { prevTime = Date.now() timer = null fn.apply(context, args) }, delay) }},}export default LazyLoad
使用上是这样的,用 v-LazyLoad 代替 src
关于"vue如何实现图片懒加载"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
图片
区域
篇文章
页面
支持
监听
事件
更多
浏览器
封装
浏览
不错
实用
内容
功能
就是
手动
指令
插件
文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
db2 连接数据库慢
阿里云数据库链接地址打不开
plsql登数据库快捷键
数据库数据恢复的方法
图像识别数据库
汽车屏显示服务器错误
刀剑乱舞 国服服务器
网络安全分工责任制
网络安全有哪些内涵
视频信息用什么数据库
打开t3显示不能登录到服务器
以下关系数据库的基本数据操作中
四川互联网共享科技公司
软件开发一年涨工资多少
彩票软件开发公司巨头
dede数据库 文章
软件开发者哪里看
网络安全加固项目文档
计算机网络与通信网络技术
词频分析软件开发的目的
重构机房数据库三范式
贵州it软件开发公司
张家港品牌网络技术要多少钱
莱山区ios软件开发解决方案
华为软件开发技术交流会
青藤云网络安全
宁波服务器托管
任务管理器应用服务器
dataset对应数据库
用云服务器搭建主机