index.vue 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <template>
  2. <v-overlay :model-value="visible" class="align-center justify-center" :close-on-content-click="false" :disabled="true" :contained="contained">
  3. <div class="loader"></div>
  4. </v-overlay>
  5. </template>
  6. <script setup>
  7. defineOptions({ name: 'LoadingPage'})
  8. defineProps({
  9. visible: Boolean,
  10. contained: Boolean
  11. })
  12. </script>
  13. <style scoped lang="scss">
  14. .loader {
  15. width: fit-content;
  16. font-weight: bold;
  17. font-family: monospace;
  18. font-size: 30px;
  19. color :#0000;
  20. overflow: hidden;
  21. animation: l9 5s infinite cubic-bezier(0.3,1,0,1);
  22. }
  23. .loader:before {
  24. content:"Loading..."
  25. }
  26. @keyframes l9 {
  27. 0% {text-shadow: 0 0 #000, 11ch 0 #dbf03f, 22ch 0 #f03756, 33ch 0 #6fedf8,44ch 0 #000}
  28. 25% {text-shadow:-11ch 0 #000, 0ch 0 #dbf03f, 11ch 0 #f03756, 22ch 0 #6fedf8,33ch 0 #000}
  29. 50% {text-shadow:-22ch 0 #000,-11ch 0 #dbf03f, 0ch 0 #f03756, 11ch 0 #6fedf8,22ch 0 #000}
  30. 75% {text-shadow:-33ch 0 #000,-22ch 0 #dbf03f,-11ch 0 #f03756, 0ch 0 #6fedf8,11ch 0 #000}
  31. 100%{text-shadow:-44ch 0 #000,-33ch 0 #dbf03f,-22ch 0 #f03756,-11ch 0 #6fedf8, 0ch 0 #000}
  32. }
  33. // .loader {
  34. // width: 120px;
  35. // height: 22px;
  36. // border-radius: 20px;
  37. // color: #00B760;
  38. // border: 2px solid;
  39. // position: relative;
  40. // }
  41. // .loader::before {
  42. // content: "";
  43. // position: absolute;
  44. // margin: 2px;
  45. // inset: 0 100% 0 0;
  46. // border-radius: inherit;
  47. // background: currentColor;
  48. // animation: l6 2s infinite;
  49. // }
  50. // @keyframes l6 {
  51. // 100% {inset:0}
  52. // }
  53. </style>