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 相关文章推荐
JS 控制小数位数的实现代码
Aug 02 Javascript
javascript中的document.open()方法使用介绍
Oct 09 Javascript
window.location的重写及判断location是否被重写
Sep 04 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
Nov 13 Javascript
JavaScript中定义类的方式详解
Jan 07 Javascript
jQuery EasyUI提交表单验证
Jul 19 Javascript
简单模拟node.js中require的加载机制
Oct 27 Javascript
原生JS与jQuery编写简单选项卡
Oct 30 jQuery
vue中的数据绑定原理的实现
Jul 02 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
May 18 Javascript
layui实现给某一列加点击事件
Oct 26 Javascript
手写实现JS中的new
Nov 07 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
discuz7 phpMysql操作类
2009/06/21 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
php无限级分类实现方法分析
2016/10/19 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
2017/05/24 PHP
由php中字符offset特征造成的绕过漏洞详解
2017/07/07 PHP
PHP静态延迟绑定和普通静态效率的对比
2017/10/20 PHP
PHP使用Http Post请求发送Json对象数据代码解析
2020/07/16 PHP
PHPstorm启用自动换行的方法详解(IDE)
2020/09/17 PHP
PHP实现爬虫爬取图片代码实例
2021/03/03 PHP
SOSO地图API使用(一)在地图上画圆实现思路与代码
2013/01/15 Javascript
JavaScript设计模式之装饰者模式介绍
2014/12/28 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
2015/02/05 Javascript
js实现图片和链接文字同步切换特效的方法
2015/02/20 Javascript
纯javascript代码实现计算器功能(三种方法)
2015/09/07 Javascript
浅谈JavaScript的push(),pop(),concat()方法
2016/06/03 Javascript
Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
2017/02/27 Javascript
微信小程序promsie.all和promise顺序执行
2017/10/27 Javascript
vue 虚拟DOM的原理
2020/10/03 Javascript
基于javascript实现放大镜特效
2020/12/03 Javascript
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
[05:24]TI9采访——教练
2019/08/24 DOTA
Python中字典(dict)和列表(list)的排序方法实例
2014/06/16 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
2017/01/24 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
2017/12/20 Python
python的Tqdm模块的使用
2018/01/10 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
2018/10/22 Python
Python字典的核心底层原理讲解
2019/01/24 Python
python实现AES加密和解密
2019/03/27 Python
python turtle工具绘制四叶草的实例分享
2020/02/14 Python
解决TensorFlow程序无限制占用GPU的方法
2020/06/30 Python
纯css3实现走马灯效果
2014/12/26 HTML / CSS
html5 迷宫游戏(碰撞检测)实例一
2013/07/25 HTML / CSS
教师工作表现评语
2014/12/31 职场文书
毕业论文致谢信
2015/05/14 职场文书
孔子观后感
2015/06/08 职场文书
2017年大学生寒假社会实践活动总结
2016/04/06 职场文书