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分页脚本
May 21 Javascript
Js 时间函数getYear()的使用问题探讨
Apr 01 Javascript
ie中js创建checkbox默认选中问题探讨
Oct 21 Javascript
一个JavaScript变量声明的知识点
Oct 28 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
Apr 15 Javascript
深入理解JavaScript中的箭头函数
Jul 28 Javascript
js中获取时间new Date()的全面介绍
Jun 20 Javascript
ionic2 tabs 图标自定义实例
Mar 08 Javascript
JQuery 封装 Ajax 常用方法(推荐)
May 21 jQuery
基于Bootstrap实现城市三级联动
Nov 23 Javascript
js实现控制文件拖拽并获取拖拽内容功能
Feb 17 Javascript
layui form.render('select', 'test2') 更新渲染的方法
Sep 27 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+mysql事务rollback&amp;commit示例
2010/02/08 PHP
PHP5中使用PDO连接数据库的方法
2010/08/01 PHP
Codeigniter校验ip地址的方法
2015/03/21 PHP
php 利用socket发送HTTP请求(GET,POST)
2015/08/24 PHP
详谈php ip2long 出现负数的原因及解决方法
2017/04/05 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
动态加载script文件的两种方法
2013/08/15 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
Javascript实现的SHA-256加密算法完整实例
2016/02/02 Javascript
socket.io与pm2(cluster)集群搭配的解决方案
2017/06/02 Javascript
jQuery复合事件用法示例
2017/06/10 jQuery
vue-resource调用promise取数据方式详解
2017/07/21 Javascript
浅谈vuex之mutation和action的基本使用
2017/08/29 Javascript
原生JS实现Ajax跨域请求flask响应内容
2017/10/24 Javascript
微信小程序实现指定显示行数多余文字去掉用省略号代替
2018/07/25 Javascript
详解 微信小程序开发框架(MINA)
2019/05/17 Javascript
Vue实现数据请求拦截
2019/10/23 Javascript
JavaScript复制变量三种方法实例详解
2020/01/09 Javascript
[49:27]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第一场
2018/04/05 DOTA
[58:37]Serenity vs Fnatic 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
使用PYTHON创建XML文档
2012/03/01 Python
Python基础入门之seed()方法的使用
2015/05/15 Python
pandas 数据实现行间计算的方法
2018/06/08 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
完美解决Python matplotlib绘图时汉字显示不正常的问题
2019/01/29 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
2019/02/15 Python
通过PHP与Python代码对比的语法差异详解
2019/07/10 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
2020/02/16 Python
Python常见反爬虫机制解决方案
2020/06/01 Python
Python结合Window计划任务监测邮件的示例代码
2020/08/05 Python
英国汽车和货车租赁网站:Hertz英国
2016/09/02 全球购物
日本食品网上商店:JaponShop.com
2017/11/28 全球购物
高校教师自荐信范文
2014/03/13 职场文书
派出所所长先进事迹
2014/05/19 职场文书
个人销售励志奋斗口号
2019/12/05 职场文书
使用Apache Camel表达REST服务的方法
2022/06/10 Servers