vue如何实现图片懒加载
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章将为大家详细讲解有关vue如何实现图片懒加载,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。图片懒加载图片懒加载就是对于有很多图片的页面,为了提高页面加载速度
千家信息网最后更新 2026年11月02日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安全错误
数据库的锁怎样保障安全
花魁咖啡
蓝思科技飞鸽互联网
美国互联网保险保险科技
科技与互联网
科技与互联网发展
善班互联网科技
卓越科技(互联网 )
长亮科技 互联网金融
互联网科技公司介绍
哈尔滨新华互联网科技
北京大学互联网科技怎么样
来此购互联网科技有限公司
武汉健翔互联网络科技有限公司
晓花互联网科技有限公司网址
互联网行业科技股
群盈汇互联网科技有限公司
互联网公司高科技产品
广州千川互联网科技有限公司
互联网科技包装股份有限公司上市
三亚科技创新互联网基地
博彦科技互联网金融
科技互联网政务服务
科技互联网公司装修
科技与互联网发展
为想互联网科技
嘟嘟瓜互联网科技
青海省互联网新科技
互联网科技公司招聘
广西互联网科技孵化中心
互联网科技对化妆品行业