自定义加载loading效果(带图片)

青旅半醒 2022-12-06 12:42 285阅读 0赞

加载中图片,底色为白色(看不到)
在这里插入图片描述

效果如图:
在这里插入图片描述

使用方法

  1. this.tool.showLoading('加载中', this)
  2. this.tool.showLoading('合成中', this)
  3. this.tool.hideLoading()

引用文件

在App.vue中

  1. <style scoped>
  2. @import './common.css';
  3. </style>

在main.js中

  1. import tools from './tools'
  2. Vue.prototype.tool = tools

tools.js

  1. export default {
  2. //显示加载框---使用方法,例如:this.tool.showLoading('正在加载',this,'1')
  3. showLoading (message, el, type) {
  4. var html = '';
  5. html += '<i class="mui-spinner mui-spinner-white"></i>';
  6. html += '<p class="text">' + (message || "数据加载中") + '</p>';
  7. //遮罩层
  8. var mask = document.getElementsByClassName("mui-show-loading-mask");
  9. if (mask.length == 0) {
  10. mask = document.createElement('div');
  11. mask.classList.add("mui-show-loading-mask");
  12. // console.log(type)
  13. // 自己添加内容...start
  14. if (type !== '2' && type) {
  15. var winHig = document.documentElement.clientHeight;
  16. if (el.$refs.nav) {
  17. var heightNav = el.$refs.nav.offsetHeight;
  18. var heightFix = el.$refs.fixed.offsetHeight;
  19. if (type === '1') {
  20. var loHig = winHig - heightNav - heightFix + 'px'
  21. } else {
  22. loHig = winHig - heightFix + 'px'
  23. }
  24. mask.style.top = heightFix + 'px'
  25. mask.style.height = loHig
  26. }
  27. }
  28. // 自己添加内容...End
  29. document.body.appendChild(mask);
  30. mask.addEventListener("touchmove", function (e) { e.stopPropagation(); e.preventDefault(); });
  31. } else {
  32. mask[0].classList.remove("mui-show-loading-mask-hidden");
  33. }
  34. //加载框
  35. var toast = document.getElementsByClassName("mui-show-loading");
  36. if (toast.length == 0) {
  37. toast = document.createElement('div');
  38. toast.classList.add("mui-show-loading");
  39. toast.classList.add('loading-visible');
  40. document.body.appendChild(toast);
  41. toast.innerHTML = html;
  42. toast.addEventListener("touchmove", function (e) { e.stopPropagation(); e.preventDefault(); });
  43. } else {
  44. toast[0].innerHTML = html;
  45. toast[0].classList.add("loading-visible");
  46. }
  47. },
  48. //隐藏加载框----使用方法,例如:this.tool.hideLoading();
  49. hideLoading (callback) {
  50. var mask = document.getElementsByClassName("mui-show-loading-mask");
  51. var toast = document.getElementsByClassName("mui-show-loading");
  52. if (mask.length > 0) {
  53. mask[0].classList.add("mui-show-loading-mask-hidden");
  54. }
  55. if (toast.length > 0) {
  56. toast[0].classList.remove("loading-visible");
  57. callback && callback();
  58. }
  59. }

common.css

  1. /*----------------mui.showLoading---------------*/
  2. .mui-show-loading {
  3. position: fixed;
  4. padding: 5px;
  5. width: 120px;
  6. min-height: 120px;
  7. top: 45%;
  8. left: 50%;
  9. margin-left: -60px;
  10. background: rgba(0, 0, 0, 0.6);
  11. text-align: center;
  12. border-radius: 5px;
  13. color: #FFFFFF;
  14. visibility: hidden;
  15. margin: 0;
  16. z-index: 2000;
  17. -webkit-transition-duration: .2s;
  18. transition-duration: .2s;
  19. opacity: 0;
  20. -webkit-transform: scale(0.9) translate(-50%, -50%);
  21. transform: scale(0.9) translate(-50%, -50%);
  22. -webkit-transform-origin: 0 0;
  23. transform-origin: 0 0;
  24. }
  25. .mui-show-loading.loading-visible {
  26. opacity: 1;
  27. visibility: visible;
  28. -webkit-transform: scale(1) translate(-50%, -50%);
  29. transform: scale(1) translate(-50%, -50%);
  30. }
  31. .mui-show-loading .mui-spinner {
  32. margin-top: 24px;
  33. width: 36px;
  34. height: 36px;
  35. }
  36. .mui-show-loading .text {
  37. line-height: 1.6;
  38. font-family: -apple-system-font, "Helvetica Neue", sans-serif;
  39. font-size: 14px;
  40. margin: 10px 0 0;
  41. color: #fff;
  42. }
  43. .mui-show-loading-mask {
  44. position: fixed;
  45. z-index: 1000;
  46. top: 0;
  47. right: 0;
  48. left: 0;
  49. bottom: 0;
  50. background-color: rgba(0, 0, 0, 0);
  51. }
  52. .mui-show-loading-mask-hidden {
  53. display: none !important;
  54. }
  55. /*toast信息提示*/
  56. .mui-toast-container {
  57. top: 5% !important;
  58. width: auto;
  59. text-align: center;
  60. }
  61. .mui-toast-message {
  62. background: url(/app/themes/default/images/toast.png) no-repeat center 10px #000;
  63. background-color: rgba(0, 0, 0, .8);
  64. color: #fff;
  65. /* max-width: 90%; */
  66. display: inline-block;
  67. width: auto;
  68. margin: 0 auto;
  69. /* padding: 70px 5px 10px 5px; */
  70. }
  71. .mui-spinner-white:after {
  72. background-image: url(./assets/loding.png);
  73. }
  74. .mui-loading .mui-spinner {
  75. display: block;
  76. margin: 0 auto;
  77. }
  78. .mui-spinner {
  79. display: inline-block;
  80. width: 24px;
  81. height: 24px;
  82. -webkit-transform-origin: 50%;
  83. transform-origin: 50%;
  84. -webkit-animation: spinner-spin 1s step-end infinite;
  85. animation: spinner-spin 1s step-end infinite;
  86. }
  87. .mui-btn .mui-spinner {
  88. width: 14px;
  89. height: 14px;
  90. vertical-align: text-bottom;
  91. }
  92. .mui-btn-block .mui-spinner {
  93. width: 22px;
  94. height: 22px;
  95. }
  96. .mui-spinner:after {
  97. display: block;
  98. width: 100%;
  99. height: 100%;
  100. content: '';
  101. background-repeat: no-repeat;
  102. background-position: 50%;
  103. background-size: 100%;
  104. }
  105. @-webkit-keyframes spinner-spin {
  106. 0% {
  107. -webkit-transform: rotate(0deg);
  108. }
  109. 8.33333333% {
  110. -webkit-transform: rotate(30deg);
  111. }
  112. 16.66666667% {
  113. -webkit-transform: rotate(60deg);
  114. }
  115. 25% {
  116. -webkit-transform: rotate(90deg);
  117. }
  118. 33.33333333% {
  119. -webkit-transform: rotate(120deg);
  120. }
  121. 41.66666667% {
  122. -webkit-transform: rotate(150deg);
  123. }
  124. 50% {
  125. -webkit-transform: rotate(180deg);
  126. }
  127. 58.33333333% {
  128. -webkit-transform: rotate(210deg);
  129. }
  130. 66.66666667% {
  131. -webkit-transform: rotate(240deg);
  132. }
  133. 75% {
  134. -webkit-transform: rotate(270deg);
  135. }
  136. 83.33333333% {
  137. -webkit-transform: rotate(300deg);
  138. }
  139. 91.66666667% {
  140. -webkit-transform: rotate(330deg);
  141. }
  142. 100% {
  143. -webkit-transform: rotate(360deg);
  144. }
  145. }
  146. @keyframes spinner-spin {
  147. 0% {
  148. transform: rotate(0deg);
  149. }
  150. 8.33333333% {
  151. transform: rotate(30deg);
  152. }
  153. 16.66666667% {
  154. transform: rotate(60deg);
  155. }
  156. 25% {
  157. transform: rotate(90deg);
  158. }
  159. 33.33333333% {
  160. transform: rotate(120deg);
  161. }
  162. 41.66666667% {
  163. transform: rotate(150deg);
  164. }
  165. 50% {
  166. transform: rotate(180deg);
  167. }
  168. 58.33333333% {
  169. transform: rotate(210deg);
  170. }
  171. 66.66666667% {
  172. transform: rotate(240deg);
  173. }
  174. 75% {
  175. transform: rotate(270deg);
  176. }
  177. 83.33333333% {
  178. transform: rotate(300deg);
  179. }
  180. 91.66666667% {
  181. transform: rotate(330deg);
  182. }
  183. 100% {
  184. transform: rotate(360deg);
  185. }
  186. }

发表评论

表情:
评论列表 (有 0 条评论,285人围观)

还没有评论,来说两句吧...

相关阅读