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 相关文章推荐
JavaScript 自动分号插入(JavaScript synat:auto semicolon insertion)
Nov 04 Javascript
简略的前端架构心得&amp;&amp;基于editor为例子的编码小技巧
Nov 25 Javascript
js中Image对象以及对其预加载处理示例
Nov 20 Javascript
推荐一个自己用的封装好的javascript插件
Jan 29 Javascript
Node.js与MySQL交互操作及其注意事项
Oct 05 Javascript
js判断文件类型大小并给出提示的实现方法
Jan 03 Javascript
Vue 组件(component)教程之实现精美的日历方法示例
Jan 08 Javascript
在vue中使用SockJS实现webSocket通信的过程
Aug 29 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
Dec 20 Javascript
ES10 特性的完整指南小结
Mar 04 Javascript
js对象简介与基本用法示例
Mar 13 Javascript
element跨分页操作选择详解
Jun 29 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 Document 代码注释规范
2009/04/13 PHP
PHP查询数据库中满足条件的记录条数(两种实现方法)
2013/01/29 PHP
php截取中文字符串不乱码的方法
2013/12/25 PHP
PHP中is_dir()函数使用指南
2015/05/08 PHP
PHP7 新特性详细介绍
2016/09/06 PHP
PHP反射实际应用示例
2019/04/03 PHP
javascript实现的简单的表单验证
2015/07/10 Javascript
如何消除inline-block属性带来的标签间间隙
2016/03/31 Javascript
js获取所有checkbox的值的简单实例
2016/05/30 Javascript
NodeJs读取JSON文件格式化时的注意事项
2016/09/25 NodeJs
Angular ng-repeat遍历渲染完页面后执行其他操作详细介绍
2016/12/13 Javascript
javascript过滤数组重复元素的实现方法
2017/05/03 Javascript
Vue计算属性的使用
2017/08/04 Javascript
微信小程序实现顶部普通选项卡效果(非swiper)
2020/06/19 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
jQury Ajax使用Token验证身份实例代码
2017/09/22 Javascript
使用Bootstrap + Vue.js实现表格的动态展示、新增和删除功能
2017/11/27 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
vue 搭建后台系统模块化开发详解
2019/05/01 Javascript
2分钟实现一个Vue实时直播系统的示例代码
2020/06/05 Javascript
ant-design表单处理和常用方法及自定义验证操作
2020/10/27 Javascript
微信小程序用户登录和登录态维护的实现
2020/12/10 Javascript
NestJs使用Mongoose对MongoDB操作的方法
2021/02/22 Javascript
python中正则表达式的使用详解
2014/10/17 Python
Python找出最小的K个数实例代码
2018/01/04 Python
怎么使用pipenv管理你的python项目
2018/03/12 Python
Python的log日志功能及设置方法
2019/07/11 Python
用pushplus+python监控亚马逊到货动态推送微信
2021/01/29 Python
经济学人订阅:The Economist
2018/07/19 全球购物
外企C语言笔试题
2013/11/10 面试题
北京-环亚运商测试题.net程序员初步测试题
2013/05/28 面试题
内部类的定义、种类以及优点
2013/10/16 面试题
2014年移动公司工作总结
2014/12/08 职场文书
2015年效能监察工作总结
2015/04/23 职场文书
2015年新农村建设工作总结
2015/05/22 职场文书
致青春观后感
2015/06/09 职场文书