Vue加载中(Windows开机动画)

简介: 这篇文章介绍了如何创建一个模仿Windows开机动画的自定义Vue Loading组件,支持自定义描述文案、是否循环动画和动画间隔时长。

(模仿Windows开机动画)效果如下图:

支持自定义设置:

  • 描述文案(tip),也可不传,默认不展示
  • 是否无限次循环动画(infinite),默认false
  • 完成一次动画后的间隔时长(interval),单位ms,默认200ms

①创建Loading.vue组件:

<template>
  <div class="m-spin">
    <div :class="['m-spin-dot', tip ? 'mt60':'mt30']">
      <span :class="['u-dot-item', { infinite: infinite, disposable: !infinite&&running }]"></span>
      <span :class="['u-dot-item', { infinite: infinite, disposable: !infinite&&running }]"></span>
      <span :class="['u-dot-item', { infinite: infinite, disposable: !infinite&&running }]"></span>
      <span :class="['u-dot-item', { infinite: infinite, disposable: !infinite&&running }]"></span>
      <!-- 监听最后一个dot动画完成 -->
      <span :class="['u-dot-item', { infinite: infinite, disposable: !infinite&&running }]" @animationend="callback"></span>
    </div>
    <p class="u-tip">{
  { tip }}</p>
  </div>
</template>
<script>
export default {
  name: 'Loading',
  props: {
    tip: { // 描述文案
      type: String,
      default: ''
    },
    infinite: { // 是否无限次循环动画
      type: Boolean,
      default: false
    },
    interval: { // 完成一次动画后的间隔时长,单位ms
      type: Number,
      default: 200
    }
  },
  data () {
    return {
      running: true // 动画运行标识,infinite为false时生效
    }
  },
  methods: {
    callback () {
      this.running = false
      setTimeout(() => {
        this.running = true
      }, this.interval)
    }
  }
}
</script>
<style lang="less" scoped>
.m-spin {
  position: relative;
  width: 100%;
  height: 100%;
}
.u-tip {
  position: absolute;
  top: 50%;
  font-size: 16px;
  line-height: 20px;
  color: #FFF;
  width: 100%;
  text-align: center;
  padding-top: 16px;
}
.m-spin-dot {
  position: absolute;
  display: inline-block;
  width: 60px;
  height: 60px;
  top: 50%;
  left: 0;
  right: 0;
  margin: 0 auto;
  .u-dot-item { // 单个圆点样式
    position: absolute;
    width: 10px;
    height: 10px;
    top: 0;
    left: 0;
    right: 0;
    margin: 0 auto;
    background: #FFF;
    border-radius: 50%;
    transform-origin: 50% 30px; // 50%为自身高度的一半
  }
  .u-dot-item:nth-child(2) {
    animation-delay: .2s;
    -webkit-animation-delay: .2s;
  }
  .u-dot-item:nth-child(3) {
    animation-delay: .4s;
    -webkit-animation-delay: .4s;
  }
  .u-dot-item:nth-child(4) {
    animation-delay: .6s;
    -webkit-animation-delay: .6s;
  }
  .u-dot-item:last-child {
    animation-delay: .8s;
    -webkit-animation-delay: .8s;
  }
  .infinite { // 无限次
    animation: spinMove 2s ease-in-out infinite;
    -webkit-animation: spinMove 2s ease-in-out infinite;
  }
  .disposable { // 一次性
    animation: spinMove 2s ease-in-out;
    -webkit-animation: spinMove 2s ease-in-out;
  }
  @keyframes spinMove {
    to { transform: rotate(360deg); } // from: 0%  to: 100%
  }
}
.mt60 {
  margin-top: -60px;
}
.mt30 {
  margin-top: -30px;
}
</style>

②在要使用的页面引用:

<div class="m-area" >
    <Loading :tip="tip" :infinite="true" :interval="200" v-show="loading" />
</div>
import Loading from '@/components/Loading'
components: {
    Loading
},
data () {
    return {
        tip: '加载中...',
        loading: false
    }
}
.m-area {
    margin: 0 auto;
    width: 500px;
    height: 400px;
    border: 1px solid #1890ff;
    background: #000;
}
相关文章
|
9月前
|
前端开发 Windows
HTML+CSS制作Windows启动加载动画
HTML+CSS制作Windows启动加载动画
|
11月前
|
XML 缓存 前端开发
SAP UI5 应用启动时加载的 library-preload.js 文件
SAP UI5 应用启动时加载的 library-preload.js 文件
|
人工智能 前端开发 JavaScript
Vue启用unity3D的exe
此次入职的公司有unity3D相关的人员,对接是避免不了的,那么今天他就来了,简单说一下此篇文章大致内容,前端Vue启动unity3D打包好的exe并且传递相关参数,那么下面我们准备上高速一路飞驰寻找诗和远方😜
127 0
Vue启用unity3D的exe
|
开发框架 Windows
解决Electron在Windows 7下出现电脑白屏的方法
Electron是一种跨平台的桌面应用程序开发框架,但在Windows 7操作系统中,有时候可能会遇到Electron应用程序出现白屏的问题。本文将介绍两种常见的情况,并提供相应的解决方法,帮助您解决Electron在Windows 7下出现电脑白屏的问题。
1221 0
解决Electron在Windows 7下出现电脑白屏的方法
|
JavaScript Windows
[Vue]解决 Windows PowerShell 不识别 vue 命令的问题
[Vue]解决 Windows PowerShell 不识别 vue 命令的问题
|
Ubuntu JavaScript 前端开发
React 项目配置 & Win10 WSL
React 项目配置 & Win10 WSL
128 0
electron-vue升级electron到最新的版本后启动不起来,窗口一闪而过。
electron-vue 升级electron到最新的版本后启动不起来,窗口一闪而过。 排查后原因: electron-vue中的集成了很多库 单方面升级了 electron版本,导致了其他库的版本的不匹配 解决: 升级配套库的版本
322 0
|
Android开发 Windows
react-native在windows环境下的项目启动
react-native在windows环境下的项目启动
102 0
react-native在windows环境下的项目启动
|
Android开发 Windows
windows环境里React-Native运行失败的原因之一,安卓模拟器未启动
windows环境里React-Native运行失败的原因之一,安卓模拟器未启动
307 0
windows环境里React-Native运行失败的原因之一,安卓模拟器未启动