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 相关文章推荐
XmlUtils JS操作XML工具类
Oct 01 Javascript
Whatever:hover 无需javascript让IE支持丰富伪类
Jun 29 Javascript
JQuery之拖拽插件实现代码
Apr 14 Javascript
javascript jscroll模拟html元素滚动条
Dec 18 Javascript
Javascript中的默认参数详解
Oct 22 Javascript
获取阴历(农历)和当前日期的js代码
Feb 15 Javascript
vue的props实现子组件随父组件一起变化
Oct 27 Javascript
ES6新特性之Object的变化分析
Mar 31 Javascript
微信小程序 连续旋转动画(this.animation.rotate)详解
Apr 07 Javascript
微信小程序实现通过双向滑动缩放图片大小的方法
Dec 30 Javascript
Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验
Apr 22 Javascript
Vuex中的Mutations的具体使用方法
Jun 01 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入门
2006/10/09 PHP
php+xml编程之SimpleXML的应用实例
2015/01/24 PHP
PHP的Yii框架中行为的定义与绑定方法讲解
2016/03/18 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
整理一些JavaScript的IE和火狐的兼容性注意事项
2011/03/17 Javascript
让你的CSS像Jquery一样做筛选的实现方法
2011/07/10 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
jQuery中hide()方法用法实例
2014/12/24 Javascript
JavaScript实现三阶幻方算法谜题解答
2014/12/29 Javascript
关于JS中的方法是否加括号的问题
2016/07/27 Javascript
Backbone中View之间传值的学习心得
2016/08/09 Javascript
jquery实现折叠菜单效果【推荐】
2017/03/08 Javascript
vue.js指令和组件详细介绍及实例
2017/04/06 Javascript
vue-axios使用详解
2017/05/10 Javascript
使用vue构建一个上传图片表单
2017/07/04 Javascript
jQuery插件实现弹性运动完整示例
2018/07/07 jQuery
深入探究Python中变量的拷贝和作用域问题
2015/05/05 Python
在Django中创建动态视图的教程
2015/07/15 Python
使用Python将数组的元素导出到变量中(unpacking)
2016/10/27 Python
浅谈Python基础之I/O模型
2017/05/11 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
免费获得微软MCSD证书赶快行动吧!
2012/11/13 HTML / CSS
HTML5如何使用SVG的方法示例
2019/01/11 HTML / CSS
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
建筑毕业生自我鉴定
2013/10/18 职场文书
毕业生自荐信的主要内容
2013/10/29 职场文书
幼儿教师思想汇报
2014/01/10 职场文书
学历公证书范本
2014/04/09 职场文书
销售人员工作自我评价
2014/09/21 职场文书
工作批评与自我批评范文
2014/10/16 职场文书
全国法制宣传日活动总结
2015/05/05 职场文书
redis配置文件中常用配置详解
2021/04/14 Redis
Python一行代码实现自动发邮件功能
2021/05/30 Python
OpenStack虚拟机快照和增量备份实现方法
2022/04/04 Servers
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript