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 multibox 全选
Mar 22 Javascript
jQuery对表单元素的取值和赋值操作代码
May 19 Javascript
Jquery 数据选择插件Pickerbox使用介绍
Aug 24 Javascript
CSS鼠标响应事件经过、移动、点击示例介绍
Sep 04 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记9)
Dec 24 Javascript
基于Node.js的强大爬虫 能直接发布抓取的文章哦
Jan 10 Javascript
JavaScript数组的定义及数字操作技巧
Jun 06 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
Aug 24 Javascript
js鼠标跟随运动效果
Mar 11 Javascript
微信小程序中使用javascript 回调函数
May 11 Javascript
基于jQuery和CSS3实现APPLE TV海报视差效果
Jun 16 jQuery
mpvue性能优化实战技巧(小结)
Apr 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
《被神捡到的男人》动画化计划进行中!
2020/03/06 日漫
laravel 5 实现模板主题功能
2015/03/02 PHP
PHP+Ajax验证码验证用户登录
2016/07/20 PHP
php 二维数组快速排序算法的实现代码
2017/10/17 PHP
PHP实现文件上传与下载
2020/08/28 PHP
jquery实现预览提交的表单代码分享
2014/05/21 Javascript
Javascript数据结构与算法之列表详解
2015/03/12 Javascript
Vue.js报错Failed to resolve filter问题的解决方法
2016/05/25 Javascript
Vue.js常用指令汇总(v-if、v-for等)
2016/11/03 Javascript
canvas实现刮刮卡效果
2017/03/14 Javascript
20行JS代码实现网页刮刮乐效果
2017/06/23 Javascript
js中url对象化管理分析
2017/12/29 Javascript
关于axios如何全局注册浅析
2018/01/14 Javascript
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
JS实现百度网盘任意文件强制下载功能
2018/08/31 Javascript
Vue2.x中利用@font-size引入字体图标报错的解决方法
2018/09/28 Javascript
vue发送websocket请求和http post请求的实例代码
2019/07/11 Javascript
稍微学一下Vue的数据响应式(Vue2及Vue3区别)
2019/11/21 Javascript
在Python中使用NLTK库实现对词干的提取的教程
2015/04/08 Python
浅谈Python NLP入门教程
2017/12/25 Python
Python3.6笔记之将程序运行结果输出到文件的方法
2018/04/22 Python
如何基于python对接钉钉并获取access_token
2020/04/21 Python
python如何变换环境
2020/07/21 Python
Python大批量搜索引擎图像爬虫工具详解
2020/11/16 Python
Html5游戏开发之乒乓Ping Pong游戏示例(一)
2013/01/21 HTML / CSS
初中生学习的自我评价
2013/11/14 职场文书
大学生军训自我鉴定
2014/02/12 职场文书
学生操行评语大全
2014/04/24 职场文书
人事专员岗位说明书
2014/07/29 职场文书
班子查摆四风个人对照检查材料思想汇报
2014/10/04 职场文书
庆七一宣传标语
2014/10/08 职场文书
2014年话务员工作总结
2014/11/19 职场文书
入党后的感想
2015/08/10 职场文书
2019年描写人生经典诗句大全
2019/07/08 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
mysql拆分字符串作为查询条件的示例代码
2022/07/07 MySQL