| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- <template>
- <div class="fullscreen-spin" :class="{ 'mask': mask }" v-if="loading">
- <div class="spin">
- <div class="spinner"></div>
- <div class="text">{{tip}}</div>
- </div>
- </div>
- </template>
- <script lang="ts" setup>
- withDefaults(defineProps<{
- loading?: boolean
- mask?: boolean
- tip?: string
- }>(), {
- loading: false,
- mask: true,
- tip: '',
- })
- </script>
- <style lang="scss" scoped>
- .fullscreen-spin {
- position: fixed;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- z-index: 100;
- display: flex;
- justify-content: center;
- align-items: center;
- &.mask {
- background-color: rgba($color: #f1f1f1, $alpha: .7);
- }
- }
- .spin {
- width: 200px;
- height: 200px;
- position: fixed;
- top: 50%;
- left: 50%;
- margin-top: -100px;
- margin-left: -100px;
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- }
- .spinner {
- width: 36px;
- height: 36px;
- // border: 3px solid $themeColor;
- border: 3px solid #ff9300;
- border-top-color: transparent;
- border-radius: 50%;
- animation: spinner .8s linear infinite;
- }
- .text {
- margin-top: 20px;
- // color: $themeColor;
- color: #ff9300;
- }
- @keyframes spinner {
- 0% {
- transform: rotate(0deg);
- }
- 100% {
- transform: rotate(360deg);
- }
- }
- </style>
|