vue-loading-spin是基于VUE实现的插件,同时也支持作为组件来使用。默认加载的图标是一个svg旋转的菊花,它用的是vue的默认插槽,也可以根据实际的业务需要自定义其他图标。
clone项目到本地,进入项目文件夹,安装依赖
git clone https://github.com/yujinjin/vue-loading-spin.git
cd loading
npm install
运行demo,会自动打开浏览器地址运行
npm run demo
编译打包项目
npm run compile
npm install vue-loading-spin
- VUE
作为插件
import Vue from 'vue'
import Loading from 'vue-loading-spin'
import 'vue-loading-spin/dist/loading.css'
// VUE use
Vue.use(Loading);
// or with options
Vue.use(Loading, {
isFixed: true, // 是否固定位置,默认为true
isComponent: true, // 是否自动注册为全局组件,如果设置为false就不会注册成组件来使用
isShowAnimation: true // 是否显示动画效果,默认为true
});
作为JS 对象
```javascript
import Loading from 'vue-loading-spin'
import 'vue-loading-spin/dist/loading.css'
let loading = Loading.get({});
loading.showLoading();
loading.hideLoading();
loading.showNetTimeout();
名称 | 描述 | 默认值 | 可选项 |
---|---|---|---|
isFixed |
是否生成绝对定位的元素,相对于浏览器窗口进行定位。 | 全局属性时是:true,全局组件时是:false | Boolean |
isShowMask |
是否显示遮罩背景 | false | Boolean |
autoRefresh |
是否(点击)自动刷新 | false | Boolean |
isShowAnimation |
是否显示动画(fadeIn)效果 | false | Boolean |
indicatorText |
提示文案 | 加载中... | String |
默认实例方法,有三个参数,可以一个都不传。默认三个参数:isShowMask = false, autoRefresh=false, indicatorText="加载中..."
this.$showLoading();
示例:
有白色背景的遮罩层
this.$showLoading(true);
示例:
网络请求超时,轻触自动刷新。默认实例方法有三个参数,也可以一个都不穿。默认三个参数:isShowMask = true, autoRefresh=true, indicatorText="网络请求超时啦,轻触自动刷新"
this.$showNetTimeout();
示例:
作为组件来使用,其配置见文档中的“配置选项”。
<loading v-model="isShow" :options="{'indicatorText': '列表数据正在加载中,请稍后...'}"></loading>
隐藏加载的实例方法。
this.$hideLoading()
为了了解弹窗dom结构,这里把弹窗的源码贴出来,方便样式定义。
<div class="loading" :class="{'mask': isShowMask, 'show': isShow, 'fadeIn': isShowAnimation, 'fixed': isFixed}" @touchmove.stop.prevent @click.stop.prevent="loadingFadeClick">
<div class="loading-content">
<slot>
<span class="loading-icon progress">
<svg viewBox="0 0 64 64">
<g stroke-width="4" stroke-linecap="round">
<line y1="17" y2="29" transform="translate(32,32) rotate(180)">
<animate attributeName="stroke-opacity" dur="750ms" values="1;.85;.7;.65;.55;.45;.35;.25;.15;.1;0;1" repeatCount="indefinite"></animate>
</line>
<line y1="17" y2="29" transform="translate(32,32) rotate(210)">
<animate attributeName="stroke-opacity" dur="750ms" values="0;1;.85;.7;.65;.55;.45;.35;.25;.15;.1;0" repeatCount="indefinite"></animate>
</line>
<line y1="17" y2="29" transform="translate(32,32) rotate(240)">
<animate attributeName="stroke-opacity" dur="750ms" values=".1;0;1;.85;.7;.65;.55;.45;.35;.25;.15;.1" repeatCount="indefinite"></animate>
</line>
<line y1="17" y2="29" transform="translate(32,32) rotate(270)">
<animate attributeName="stroke-opacity" dur="750ms" values=".15;.1;0;1;.85;.7;.65;.55;.45;.35;.25;.15" repeatCount="indefinite"></animate>
</line>
<line y1="17" y2="29" transform="translate(32,32) rotate(300)">
<animate attributeName="stroke-opacity" dur="750ms" values=".25;.15;.1;0;1;.85;.7;.65;.55;.45;.35;.25" repeatCount="indefinite"></animate>
</line>
<line y1="17" y2="29" transform="translate(32,32) rotate(330)">
<animate attributeName="stroke-opacity" dur="750ms" values=".35;.25;.15;.1;0;1;.85;.7;.65;.55;.45;.35" repeatCount="indefinite"></animate>
</line>
<line y1="17" y2="29" transform="translate(32,32) rotate(0)">
<animate attributeName="stroke-opacity" dur="750ms" values=".45;.35;.25;.15;.1;0;1;.85;.7;.65;.55;.45" repeatCount="indefinite"></animate>
</line>
<line y1="17" y2="29" transform="translate(32,32) rotate(30)">
<animate attributeName="stroke-opacity" dur="750ms" values=".55;.45;.35;.25;.15;.1;0;1;.85;.7;.65;.55" repeatCount="indefinite"></animate>
</line>
<line y1="17" y2="29" transform="translate(32,32) rotate(60)">
<animate attributeName="stroke-opacity" dur="750ms" values=".65;.55;.45;.35;.25;.15;.1;0;1;.85;.7;.65" repeatCount="indefinite"></animate>
</line>
<line y1="17" y2="29" transform="translate(32,32) rotate(90)">
<animate attributeName="stroke-opacity" dur="750ms" values=".7;.65;.55;.45;.35;.25;.15;.1;0;1;.85;.7" repeatCount="indefinite"></animate>
</line>
<line y1="17" y2="29" transform="translate(32,32) rotate(120)">
<animate attributeName="stroke-opacity" dur="750ms" values=".85;.7;.65;.55;.45;.35;.25;.15;.1;0;1;.85" repeatCount="indefinite"></animate>
</line>
<line y1="17" y2="29" transform="translate(32,32) rotate(150)">
<animate attributeName="stroke-opacity" dur="750ms" values="1;.85;.7;.65;.55;.45;.35;.25;.15;.1;0;1" repeatCount="indefinite"></animate>
</line>
</g>
</svg>
</span>
</slot>
<div class="indicator-text" v-html="indicatorText" v-if="indicatorText"></div>
</div>
</div>
-
如果喜欢一定要 star哈!!!(谢谢!!)
-
如果有意见和问题 请在 lssues提出,我会在线解答。