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与函数式编程解释
Apr 27 Javascript
最简单的jQuery程序 入门者学习
Jul 09 Javascript
基于jquery的一个拖拽到指定区域内的效果
Sep 21 Javascript
JS简单计算器实例
Jan 20 Javascript
AngularJS 日期格式化详解
Dec 23 Javascript
javascript实现禁止复制网页内容汇总
Dec 30 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
May 31 Javascript
微信js-sdk上传与下载图片接口用法示例
Oct 12 Javascript
父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法
Apr 25 Javascript
Three.js实现3D机房效果
Dec 30 Javascript
微信小程序与webview交互实现支付功能
Jun 07 Javascript
javascript实现倒计时效果
Feb 17 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
服务器端解压缩zip的脚本
2006/12/22 PHP
php下实现伪 url 的超简单方法[转]
2007/09/24 PHP
PHP 抽象方法与抽象类abstract关键字介绍及应用
2014/10/16 PHP
[原创]php简单隔行变色功能实现代码
2016/07/09 PHP
解决laravel(5.5)访问public报错的问题
2019/10/12 PHP
javascript的函数
2007/01/31 Javascript
实现JavaScript中继承的三种方式
2009/10/16 Javascript
js 3种归并操作的实例代码
2013/10/30 Javascript
javascript验证上传文件的类型限制必须为某些格式
2013/11/14 Javascript
jQuery避免$符和其他JS库冲突的方法对比
2014/02/20 Javascript
使用js画图之圆、弧、扇形
2015/01/12 Javascript
跟我学习javascript的prototype使用注意事项
2015/11/17 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
2016/08/19 Javascript
jquery 禁止鼠标右键并监听右键事件
2017/04/27 jQuery
ECMAscript 变量作用域总结概括
2017/08/18 Javascript
vue左右侧联动滚动的实现代码
2018/06/06 Javascript
VueJS实现用户管理系统
2020/05/29 Javascript
JS猜数字游戏实例讲解
2020/06/30 Javascript
VSCode插件安装完成后的配置(常用配置)
2020/08/24 Javascript
[01:43]深扒TI7聊天轮盘语音出处4
2017/05/11 DOTA
基于Python如何使用AIML搭建聊天机器人
2016/01/27 Python
利用pyinstaller或virtualenv将python程序打包详解
2017/03/22 Python
Python numpy实现二维数组和一维数组拼接的方法
2018/06/05 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
2018/06/19 Python
numpy中的ndarray方法和属性详解
2019/05/27 Python
python自动发邮件总结及实例说明【推荐】
2019/05/31 Python
python tkinter图形界面代码统计工具
2019/09/18 Python
TensorFlow设置日志级别的几种方式小结
2020/02/04 Python
信号生成及DFT的python实现方式
2020/02/25 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
2020/11/17 Python
毕业典礼演讲稿
2014/05/13 职场文书
电影建党伟业观后感
2015/06/01 职场文书
2016年先进教师个人事迹材料
2016/02/26 职场文书
晚会开幕词范文
2016/03/04 职场文书
MySQL8.0 Undo Tablespace管理详解
2022/06/16 MySQL