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实现页面滚动图片加载(仿lazyload效果)
Jul 22 Javascript
jQuery代码优化之基本事件
Nov 01 Javascript
动态载入js提高网页打开速度的方法
Jul 04 Javascript
vue数据双向绑定原理解析(get &amp; set)
Mar 08 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
Mar 09 Javascript
vue-router 中router-view不能渲染的解决方法
May 23 Javascript
静态页面实现 include 引入公用代码的示例
Sep 25 Javascript
jquery一键控制checkbox全选、反选或全不选
Oct 16 jQuery
浅谈微信小程序之官方UI框架we-ui使用教程
Aug 20 Javascript
React降级配置及Ant Design配置详解
Dec 27 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
Mar 14 Javascript
vue+Element-ui前端实现分页效果
Nov 15 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
怎么样可以把 phpinfo()屏蔽掉?
2006/11/24 PHP
PHP截取IE浏览器并缩小原图的方法
2016/03/04 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
一些经常会用到的Javascript检测函数
2010/05/31 Javascript
js或者jquery判断图片是否加载完成实现代码
2013/03/20 Javascript
sencha touch 模仿tabpanel导航栏TabBar的实例代码
2013/10/24 Javascript
html dom节点操作(获取/修改/添加或删除)
2014/01/23 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
使用JS读取XML文件的方法
2016/11/25 Javascript
利用Javascript实现简单的转盘抽奖
2017/02/13 Javascript
JavaScript实现三级联动效果
2017/07/15 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
JS实现轮播图效果
2020/01/11 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
python多线程用法实例详解
2015/01/15 Python
实例解析Python中的__new__特殊方法
2016/06/02 Python
详解python 发送邮件实例代码
2016/12/22 Python
Python基于回溯法子集树模板解决找零问题示例
2017/09/11 Python
Python enumerate索引迭代代码解析
2018/01/19 Python
python程序变成软件的实操方法
2019/06/24 Python
使用Pandas的Series方法绘制图像教程
2019/12/04 Python
Selenium alert 弹窗处理的示例代码
2020/08/06 Python
如何将json数据转换为python数据
2020/09/04 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
2020/09/29 Python
python实现录音功能(可随时停止录音)
2020/10/26 Python
CSS 说明横向进度条最后显示文字的实现代码
2020/11/10 HTML / CSS
前端实现背景虚化但内容清晰且自适应 的实例代码
2019/08/01 HTML / CSS
汉森冲浪板:Hansen Surfboards
2018/05/19 全球购物
意大利一家专营包包和配饰的网上商店:Borse Last Minute
2019/08/26 全球购物
社团2014年植树节活动总结
2014/03/11 职场文书
小学生评语大全
2014/04/18 职场文书
志愿者宣传口号
2014/06/17 职场文书
委托证明范本
2014/11/25 职场文书
2015年企业新年寄语
2014/12/08 职场文书
医院志愿者活动总结
2015/05/06 职场文书
导游词之湖州-太湖
2019/10/11 职场文书