vue如何实现图片懒加载
发表于:2024-12-12 作者:千家信息网编辑
千家信息网最后更新 2024年12月12日,这篇文章将为大家详细讲解有关vue如何实现图片懒加载,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。图片懒加载图片懒加载就是对于有很多图片的页面,为了提高页面加载速度
千家信息网最后更新 2024年12月12日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安全错误
数据库的锁怎样保障安全
数字转图形软件开发
流行的服务器
asp从服务器下载文件
网络安全始终高悬
软件开发的基础是什么
vc 软件开发案例视频
微交易软件开发平台流程
互联网的最顶端服务器
数据库表分区
中国移动宽带服务器
和驿网络技术怎么样
软件开发转型科学
阜阳公安机关网络安全视频
开局送32k的服务器游戏推荐
数据库配置助手可以实现
全国网络安全知识竞赛第四期
怎么下载万方数据库的期刊
计算机网络技术特色
自己的电脑怎么坐服务器
公共网络安全性较高
微信使用代理服务器无法视频链接
国内的云服务器 魔力象限
东莞鹏远网络技术有限公司
软件开发风潮
大型服务器会出现卡顿吗
涉密网络安全排查方案
人脸大数据库
svn管理服务器
秦川机床软件开发
大连企业软件开发