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 一行代码,轻松搞定浮动快捷留言-V2升级版
Apr 02 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
Dec 31 Javascript
实例代码讲解jquery easyui动态tab页
Nov 17 Javascript
JavaScript中捕获与冒泡详解及实例
Feb 03 Javascript
Js apply方法详解
Feb 16 Javascript
vue 使用eventBus实现同级组件的通讯
Mar 02 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
Apr 12 Javascript
Vue $mount实战之实现消息弹窗组件
Apr 22 Javascript
JavaScript canvas绘制圆弧与圆形
Feb 18 Javascript
angular组件间传值测试的方法详解
May 07 Javascript
JS数组及对象遍历方法代码汇总
Jun 16 Javascript
JavaScript实现淘宝商品图切换效果
Apr 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
php数据库连接时容易出错的特殊符号问题
2010/09/01 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
2014/06/25 PHP
php保存信息到当前Session的方法
2015/03/16 PHP
PHP封装CURL扩展类实例
2015/07/28 PHP
jquery常用操作小结
2014/07/21 Javascript
Nodejs Post请求报socket hang up错误的解决办法
2014/09/25 NodeJs
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
基于Three.js插件制作360度全景图
2016/11/29 Javascript
Angular2 PrimeNG分页模块学习
2017/01/14 Javascript
jQuery实现给input绑定回车事件的方法
2017/02/09 Javascript
基于jQuery封装的分页组件
2017/06/26 jQuery
实例详解JavaScript中setTimeout函数的执行顺序
2017/07/12 Javascript
three.js中文文档学习之创建场景
2017/11/20 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
jQuery实现表单动态加减、ajax表单提交功能
2018/06/08 jQuery
JSON生成Form表单的方法示例
2018/11/21 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
Python自动化构建工具scons使用入门笔记
2015/03/10 Python
python+matplotlib实现动态绘制图片实例代码(交互式绘图)
2018/01/20 Python
python解析html提取数据,并生成word文档实例解析
2018/01/22 Python
pandas修改DataFrame列名的方法
2018/04/08 Python
Python模拟登录的多种方法(四种)
2018/06/01 Python
Python大数据之从网页上爬取数据的方法详解
2019/11/16 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
2020/02/26 Python
Python的in,is和id函数代码实例
2020/04/18 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
2020/10/12 Python
几个CSS3的flex弹性盒模型布局的简单例子演示
2016/05/12 HTML / CSS
法国包包和行李箱销售网站:Bagage24.fr
2020/03/24 全球购物
销售主管岗位职责范本
2014/02/14 职场文书
拉拉队口号
2014/06/16 职场文书
大学生赌博检讨书
2014/09/22 职场文书
学生乘坐校车安全责任书
2015/05/11 职场文书
西游记读书笔记
2015/06/25 职场文书
python中的class_static的@classmethod的巧妙用法
2021/06/22 Python