<template>
  <div class'loading-wrapper' v-if='loading'>
    <div class'loading-overlay'></div>
    <div class'loading-content'>
      <div class'loading-spinner'></div>
      <div class'loading-text'>{{ text }}</div>
    </div>
  </div>
</template>
<script>
import { ref } from 'vue';

export default {
  setup() {
    const loading = ref(false);
    const text = ref('Loading...');

    const showLoading = (message = 'Loading...') => {
      text.value = message;
      loading.value = true;
    };

    const hideLoading = () => {
      loading.value = false;
    };

    return {
      loading,
      text,
      showLoading,
      hideLoading,
    };
  },
};
</script>
<style>
.loading-wrapper {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 9999;
}

.loading-overlay {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.6);
}

.loading-content {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  color: #fff;
  font-size: 18px;
}

.loading-spinner {
  border: 3px solid rgba(255, 255, 255, 0.3);
  border-top-color: #fff;
  border-radius: 50%;
  width: 30px;
  height: 30px;
  animation: loading-spinner 0.6s linear infinite;
  margin-bottom: 10px;
}

.loading-text {
  margin-top: 10px;
}
@keyframes loading-spinner {
  to {
    transform: rotate(360deg);
  }
}
</style>
<p>该组件可以通过调用 <code>showLoading()</code> 和 <code>hideLoading()</code> 方法来显示和隐藏loading。可以通过 <code>text</code> 属性设置loading显示的文本。在需要显示loading时,只需要在组件上调用 <code>showLoading()</code> 方法,loading组件就会出现在页面上。在需要隐藏loading时,只需要调用 <code>hideLoading()</code> 方法即可。该组件的样式可以根据实际需要进行自定义。</p>
Vue 3 全局 Loading 组件实现 - 优雅的加载状态管理

原文地址: https://www.cveoy.top/t/topic/n39Q 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录