Vue 全局loading组件实例详解


Posted in Javascript onMay 29, 2018

上图不上种,菊花万人捅:

Vue 全局loading组件实例详解

loading.js:

import './loading.css'
 let Loading = {}
// 避免重复install,设立flag
Loading.installed = false
Loading.install = function (Vue) {
 if (Loading.installed) return
 Vue.prototype.$loading = {}
 Vue.prototype.$loading.show = () => {
 // 如果页面有loading则不继续执行
 if (document.querySelector('#vue-loading')) return
 // 1、创建构造器,定义loading模板
 let LoadingTip = Vue.extend({
  template: `<div id="vue-loading">
     <div class="loader"></div>
     </div>`
 })
 // 2、创建实例,挂载到文档以后的地方
 let tpl = new LoadingTip().$mount().$el
 // 3、把创建的实例添加到body中
 document.body.appendChild(tpl)
 // 阻止遮罩滑动
 document.querySelector('#vue-loading').addEventListener('touchmove', function (e) {
  e.stopPropagation()
  e.preventDefault()
 })
 Loading.installed = true
 }
 Vue.prototype.$loading.hide = () => {
 let tpl = document.querySelector('#vue-loading')
 document.body.removeChild(tpl)
 }
}
export default Loading

loading.css:

#vue-loading {
 width: 100%;
 height: 100%;
 position: absolute;
 left: 0;
 top: 0
}
.loader {
 position: relative;
 width: 2.5em;
 height: 2.5em;
 transform: rotate(165deg);
}
.loader:before, .loader:after {
 content: '';
 position: absolute;
 top: 50%;
 left: 50%;
 display: block;
 width: 0.5em;
 height: 0.5em;
 border-radius: 0.25em;
 transform: translate(-50%, -50%);
}
.loader:before {
 animation: before 2s infinite;
}
.loader:after {
 animation: after 2s infinite;
}
@keyframes before {
 0% {
 width: 0.5em;
 box-shadow: 1em -0.5em rgba(225, 20, 98, 0.75), -1em 0.5em rgba(111, 202, 220, 0.75);
 }
 35% {
 width: 2.5em;
 box-shadow: 0 -0.5em rgba(225, 20, 98, 0.75), 0 0.5em rgba(111, 202, 220, 0.75);
 }
 70% {
 width: 0.5em;
 box-shadow: -1em -0.5em rgba(225, 20, 98, 0.75), 1em 0.5em rgba(111, 202, 220, 0.75);
 }
 100% {
 box-shadow: 1em -0.5em rgba(225, 20, 98, 0.75), -1em 0.5em rgba(111, 202, 220, 0.75);
 }
}
@keyframes after {
 0% {
 height: 0.5em;
 box-shadow: 0.5em 1em rgba(61, 184, 143, 0.75), -0.5em -1em rgba(233, 169, 32, 0.75);
 }
 35% {
 height: 2.5em;
 box-shadow: 0.5em 0 rgba(61, 184, 143, 0.75), -0.5em 0 rgba(233, 169, 32, 0.75);
 }
 70% {
 height: 0.5em;
 box-shadow: 0.5em -1em rgba(61, 184, 143, 0.75), -0.5em 1em rgba(233, 169, 32, 0.75);
 }
 100% {
 box-shadow: 0.5em 1em rgba(61, 184, 143, 0.75), -0.5em -1em rgba(233, 169, 32, 0.75);
 }
}
/**
 * Attempt to center the whole thing!
 */
html,
body {
 height: 100%;
}
.loader {
 position: absolute;
 top: calc(50% - 1.25em);
 left: calc(50% - 1.25em);
}

这样就可以直接在组件里面手动调用啦!

调用方法: this.$loading.show(),  this.$loading.hide()

因为这个项目暂时规模很小,就只有注册功能,我直接把调用写在axios请求拦截器里面,每次请求和请求结束都会调用loading,这样就不用在页面里面手动调用啦。

总结

以上所述是小编给大家介绍的Vue 全局loading组件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
ASP中用Join和Array,可以加快字符连接速度的代码
Aug 22 Javascript
Node.js 服务器端应用开发框架 -- Hapi.js
Jul 29 Javascript
js实现背景图片感应鼠标变化的方法
Feb 28 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
Mar 02 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
Jan 12 Javascript
浅谈js键盘事件全面控制
Dec 01 Javascript
纯js实现图片匀速淡入淡出效果
Aug 22 Javascript
详解webpack 热更新优化
Sep 13 Javascript
JavaScript中的执行环境和作用域链
Sep 04 Javascript
vant 中van-list的用法说明
Nov 11 Javascript
Taro小程序自定义顶部导航栏功能的实现
Dec 17 Javascript
Ajax实现页面无刷新留言效果
Mar 24 Javascript
详解vue-cli 本地开发mock数据使用方法
May 29 #Javascript
详解vue-cli项目中怎么使用mock数据
May 29 #Javascript
js统计页面上每个标签的数量实例代码
May 29 #Javascript
浅谈React的最大亮点之虚拟DOM
May 29 #Javascript
深入理解Vue Computed计算属性原理
May 29 #Javascript
javascript、php关键字搜索函数的使用方法
May 29 #Javascript
Vue路由切换时的左滑和右滑效果示例
May 29 #Javascript
You might like
php array_filter除去数组中的空字符元素
2020/06/21 PHP
PHP根据IP判断地区名信息的示例代码
2014/03/03 PHP
PHP执行linux命令常用函数汇总
2016/02/02 PHP
PHP实现的curl批量请求操作示例
2018/06/06 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
dess中一个简单的多路委托的实现
2010/07/20 Javascript
javascript 防止刷新,后退,关闭
2010/08/07 Javascript
jquery用data方法获取某个元素上的事件
2014/06/23 Javascript
Node.js抓取中文网页乱码问题和解决方法
2015/02/10 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
2015/07/18 Javascript
基于jquery实现全屏滚动效果
2015/11/26 Javascript
JavaScript实现的MD5算法完整实例
2016/02/02 Javascript
JS实现的仿QQ空间图片弹出效果代码
2016/02/23 Javascript
JS 数组随机洗牌的实例代码
2018/09/12 Javascript
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
2019/02/20 jQuery
vue elementUI table 自定义表头和行合并的实例代码
2019/05/22 Javascript
最简单的vue消息提示全局组件的方法
2019/06/16 Javascript
详解vue高级特性
2020/06/09 Javascript
微信小程序实现弹幕墙(祝福墙)
2020/11/18 Javascript
python完成FizzBuzzWhizz问题(拉勾网面试题)示例
2014/05/05 Python
详解Python发送邮件实例
2016/01/10 Python
Python网络爬虫实例讲解
2016/04/28 Python
python3.x实现发送邮件功能
2018/05/22 Python
python将pandas datarame保存为txt文件的实例
2019/02/12 Python
Python使用POP3和SMTP协议收发邮件的示例代码
2019/04/16 Python
Django自定义用户登录认证示例代码
2019/06/30 Python
在tensorflow中设置保存checkpoint的最大数量实例
2020/01/21 Python
matplotlib jupyter notebook 图像可视化 plt show操作
2020/04/24 Python
如何在mac版pycharm选择python版本
2020/07/21 Python
利用Python的folium包绘制城市道路图的实现示例
2020/08/24 Python
image-set实现Retina屏幕下图片显示详细介绍
2012/12/24 HTML / CSS
求职简历推荐信范文
2013/12/02 职场文书
银行行长竞聘演讲稿
2014/04/23 职场文书
学习雷锋活动总结
2014/04/29 职场文书
公司年会晚会开幕词
2019/04/02 职场文书
pytorch中的torch.nn.Conv2d()函数图文详解
2022/02/28 Python