vue3 loading 等待效果

一、自定义组件 loading.vue

复制代码
<template>
  <div class="loading" v-show="msg.show">
    <div class="load-box">
      <img src="@/assets/img/load.png">
      <!--<img src="@/assets/img/loading_white.png">-->
      <span>{{msg.title}}</span>
    </div>
  </div>
</template>

<script>
export default {
  name: 'loading',
  props: {
    msg: Object,
  }
}
</script>

<style scoped lang="scss">
.loading {
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 9999;
  .load-box {
    background-color: rgba(0, 0, 0, .5);
    width: 100px;height: 100px;border-radius: 5px;
    box-shadow:0px 1px 15px rgba(0,0,0, .5);color: #fff;
    display: flex;flex-direction: column;align-items: center;
    justify-content: center;letter-spacing: .8px;
    font-size: 13px;
    img{
      width: 30px;margin-bottom: 8px;
      -webkit-animation:rotate .8s linear infinite;
    }
  }
}

@keyframes rotate{
  to{
    transform: rotate(360deg);
  }
}
</style>
复制代码

二、utils/loading.js 创建封装js控制显示和隐藏,以及需要显示的文字

复制代码
import { createApp, reactive } from 'vue'

import myLoad from '@/components/Loading/loading.vue'

const msg = reactive({
  show: false,
  title: '加载中...'
})

const $loading = createApp(myLoad, {msg}).mount(document.createElement('div'))
const load = {
  show(title) { // 控制显示loading的方法
    msg.show = true
    msg.title = title
    document.body.appendChild($loading.$el)
  },

  hide() { // 控制loading隐藏的方法
    msg.show = false
  }
}
export  { load }
复制代码

三、页面使用

复制代码
import { load } from '@/utils/loading.js';

// 在需要使用时调用show方法
// 例如在指定api调用,或者其他耗时操作时打开loading
// 不传参默认为 加载中...
load.show();
load.show('登录中...');

//在加载完成时关闭
load.hide();
复制代码

图片

 

 

 https://blog.csdn.net/qq_43106047/article/details/126262917

 


 

posted @   cmooc  阅读(1726)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示