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 相关文章推荐
jQuery-serialize()输出序列化form表单值的方法
Dec 26 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
May 14 Javascript
JS运动框架之分享侧边栏动画实例
Mar 03 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
Oct 04 Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
May 24 jQuery
jQuery实现简单日期格式化功能示例
Sep 19 jQuery
JS实现前端缓存的方法
Sep 21 Javascript
vue之父子组件间通信实例讲解(props、$ref、$emit)
May 22 Javascript
微信小程序中换行空格(多个空格)写法详解
Jul 10 Javascript
vue 自定义提示框(Toast)组件的实现代码
Aug 17 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
Aug 13 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
Sep 24 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之字符串变相相减的代码
2007/03/19 PHP
php下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
利用Memcached在php下实现session机制 替换PHP的原生session支持
2010/08/21 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
2015/04/21 PHP
php操纵mysqli数据库的实现方法
2016/09/18 PHP
windows 2008r2+php5.6.28环境搭建详细过程
2019/06/18 PHP
js判断样式className同时增加class或删除class
2013/01/30 Javascript
JavaScript调用后台的三种方法实例
2013/10/17 Javascript
AngularJS实现Model缓存的方式
2016/02/03 Javascript
BootStrap响应式导航条实例介绍
2016/05/06 Javascript
基于JS实现省市联动效果代码分享
2016/06/06 Javascript
javascript 常用验证函数总结
2016/06/28 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
微信公众平台开发教程(五)详解自定义菜单
2016/12/02 Javascript
深入理解jquery中的each用法
2016/12/14 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
2017/03/09 Javascript
vue.js语法及常用指令
2017/10/29 Javascript
详解如何从零开始搭建Express+Vue开发环境
2018/07/17 Javascript
详解为什么Vue中不要用index作为key(diff算法)
2020/04/04 Javascript
Vue如何提升首屏加载速度实例解析
2020/06/25 Javascript
python通过scapy获取局域网所有主机mac地址示例
2014/05/04 Python
详解字典树Trie结构及其Python代码实现
2016/06/03 Python
对pycharm 修改程序运行所需内存详解
2018/12/03 Python
如何使用Python自动控制windows桌面
2019/07/11 Python
python线程信号量semaphore使用解析
2019/11/30 Python
Python实现加密接口测试方法步骤详解
2020/06/05 Python
详解如何解决canvas图片getImageData,toDataURL跨域问题
2018/09/17 HTML / CSS
Ibatis如何调用存储过程
2015/05/15 面试题
Oracle性能调优原则
2012/05/03 面试题
.NET面试题:什么是值类型和引用类型
2016/01/12 面试题
公司前台接待岗位职责
2015/04/03 职场文书
伊索寓言读书笔记
2015/06/30 职场文书
优秀教师工作总结2015
2015/07/22 职场文书
mysql 获取时间方式
2022/03/20 MySQL
Java Lambda表达式常用的函数式接口
2022/04/07 Java/Android
Python使用Web框架Flask开发项目
2022/06/01 Python