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;
}
相关文章
|
Go 开发工具 C语言
flutter项目打包.exe文件发布windows版
目录 发布windows版 1.为现有的 Flutter 应用程序添加桌面支持 2..创建main_desktop.dart文件 3.hover安装和环境配置 4.初始化,并打包 坑1
1476 0
flutter项目打包.exe文件发布windows版
|
2月前
|
资源调度 运维 JavaScript
使用electron创建桌面应用及常见打包错误解决
使用electron创建桌面应用及常见打包错误解决
316 3
|
JavaScript Windows
Windows系统使用命令提示符创建Vue3项目
Windows系统使用命令提示符创建Vue3项目
|
前端开发 Windows
HTML+CSS制作Windows启动加载动画
HTML+CSS制作Windows启动加载动画
|
JavaScript 搜索推荐 Windows
基于jquery开发的Windows 12网页版
基于jquery开发的Windows 12网页版
150 0
基于jquery开发的Windows 12网页版
|
开发框架 Windows
解决Electron在Windows 7下出现电脑白屏的方法
Electron是一种跨平台的桌面应用程序开发框架,但在Windows 7操作系统中,有时候可能会遇到Electron应用程序出现白屏的问题。本文将介绍两种常见的情况,并提供相应的解决方法,帮助您解决Electron在Windows 7下出现电脑白屏的问题。
1524 0
解决Electron在Windows 7下出现电脑白屏的方法
|
人工智能 前端开发 JavaScript
Vue启用unity3D的exe
此次入职的公司有unity3D相关的人员,对接是避免不了的,那么今天他就来了,简单说一下此篇文章大致内容,前端Vue启动unity3D打包好的exe并且传递相关参数,那么下面我们准备上高速一路飞驰寻找诗和远方😜
144 0
Vue启用unity3D的exe
|
JavaScript Windows
[Vue]解决 Windows PowerShell 不识别 vue 命令的问题
[Vue]解决 Windows PowerShell 不识别 vue 命令的问题
|
Ubuntu JavaScript 前端开发
React 项目配置 & Win10 WSL
React 项目配置 & Win10 WSL
139 0
|
运维 数据可视化 测试技术
使用nw.js将web项目打包为exe软件(xp版本)
使用nw.js将web项目打包为exe软件(xp版本)
498 0
使用nw.js将web项目打包为exe软件(xp版本)