vue如何实现图片懒加载
发表于:2025-11-17 作者:千家信息网编辑
千家信息网最后更新 2025年11月17日,这篇文章将为大家详细讲解有关vue如何实现图片懒加载,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。图片懒加载图片懒加载就是对于有很多图片的页面,为了提高页面加载速度
千家信息网最后更新 2025年11月17日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安全错误
数据库的锁怎样保障安全
宁波磨西网络技术有限公司
oracle 数据库监听
手机软件开发模板
弹簧设计软件开发
网络技术对会计的影响
基于mvc的软件开发
xp系统如何添加数据库
加强网络安全信息采集分析
移致数据库 ios
国神集团网络安全技术
我的世界基岩测试版生存服务器
最新农村普查数据库
南昌什么电子软件开发学校好
服务器自动关机后开机没反应
h3c服务器进bios按什么键
服务器电源没有5v输出
公司网络安全工作现状
无障碍服务软件开发困难吗
网络安全法学系总结
怎么在数据库中添加2和主键
2020网络安全教育日
常见网络安全防范技术辩论
学校网络安全周主题班会
东南亚软件开发都是骗局吗
贵州十大软件开发公司
利用网络技术宣传安全生产
卸载server数据库
学生网络安全作业
哪款电脑适合软件开发
qq访问服务器