our-loading.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <template>
  2. <!-- #ifdef H5 -->
  3. <transition name="fade">
  4. <!-- #endif -->
  5. <view class="mask" v-show="isActive" :class="{ 'full-screen': isFullScreen }" :style="{ backgroundColor }">
  6. <view class="spinner" :style="{ transform:`translate(-50%, -${translateY}%)`}">
  7. <slot>
  8. <!-- ==========在这里改成选择的那一个========== -->
  9. <shrinkRect :color="color" :size="size" />
  10. <!-- ==========在这里改成选择的那一个========== -->
  11. </slot>
  12. <view v-if="text.length" :style="{ color:textColor }">
  13. {{ text }}
  14. </view>
  15. </view>
  16. </view>
  17. <!-- #ifdef H5 -->
  18. </transition>
  19. <!-- #endif -->
  20. </template>
  21. <script>
  22. // ==========在这里选一个你要的其他去掉也行==========
  23. // import loop from './loaders/loop.vue'
  24. // import bounce from './loaders/bounce.vue'
  25. // import doubleBounce from './loaders/double-bounce.vue'
  26. // import doubleCube from './loaders/double-cube.vue'
  27. // import doubleDot from './loaders/double-dot.vue'
  28. // import rotatePlane from './loaders/rotate-plane.vue'
  29. // import scaleOut from './loaders/scale-out.vue'
  30. import shrinkRect from './loaders/shrink-rect.vue'
  31. // ==========在这里选一个你要的其他去掉也行==========
  32. export default {
  33. name: 'ourLoading',
  34. components: {
  35. // ==========在这里选择一个==========
  36. // loop,
  37. // bounce,
  38. // doubleBounce,
  39. // doubleCube,
  40. // doubleDot,
  41. // rotatePlane,
  42. // scaleOut,
  43. shrinkRect
  44. // ==========在这里选择一个==========
  45. },
  46. props: {
  47. active: Boolean,
  48. translateY: {
  49. type: Number,
  50. default: 150
  51. },
  52. text: {
  53. type: String,
  54. default: ''
  55. },
  56. color: {
  57. type: String,
  58. default: '#333'
  59. },
  60. textColor: {
  61. type: String,
  62. default: '#333'
  63. },
  64. isFullScreen: {
  65. type: Boolean,
  66. default: false
  67. },
  68. backgroundColor: {
  69. type: String,
  70. default: 'rgba(255, 255, 255, .9)'
  71. },
  72. size: {
  73. type: Number,
  74. default: 40
  75. }
  76. },
  77. data() {
  78. return {
  79. isActive: this.active || false
  80. }
  81. },
  82. watch: {
  83. active(value) {
  84. this.isActive = value
  85. }
  86. }
  87. }
  88. </script>
  89. <style scoped>
  90. .mask {
  91. position: absolute;
  92. left: 0;
  93. right: 0;
  94. top: 0;
  95. bottom: 0;
  96. z-index: 3000;
  97. transition: opacity .3s linear;
  98. }
  99. .full-screen {
  100. position: fixed;
  101. top: 0;
  102. right: 0;
  103. bottom: 0;
  104. left: 0;
  105. }
  106. .spinner {
  107. position: absolute;
  108. top: 50%;
  109. left: 50%;
  110. text-align: center;
  111. }
  112. /* #ifdef H5 */
  113. .fade-enter-active,
  114. .fade-leave-active {
  115. transition: opacity .3s;
  116. }
  117. .fade-enter,
  118. .fade-leave-to {
  119. opacity: 0;
  120. }
  121. /* #endif */
  122. </style>