loading.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import Vue from 'vue';
  2. import loadingCss from '@/theme/loading.scss';
  3. // 定义方法
  4. export const PrevLoading = {
  5. // 载入 css
  6. setCss: () => {
  7. let link = document.createElement('link');
  8. link.rel = 'stylesheet';
  9. link.href = loadingCss;
  10. link.crossOrigin = 'anonymous';
  11. document.getElementsByTagName('head')[0].appendChild(link);
  12. },
  13. // 创建 loading
  14. start: () => {
  15. const bodys = document.body;
  16. const div = document.createElement('div');
  17. div.setAttribute('class', 'loading-prev');
  18. const htmls = `
  19. <div class="loading-prev-box">
  20. <div class="loading-prev-box-warp">
  21. <div class="loading-prev-box-item"></div>
  22. <div class="loading-prev-box-item"></div>
  23. <div class="loading-prev-box-item"></div>
  24. <div class="loading-prev-box-item"></div>
  25. <div class="loading-prev-box-item"></div>
  26. <div class="loading-prev-box-item"></div>
  27. <div class="loading-prev-box-item"></div>
  28. <div class="loading-prev-box-item"></div>
  29. <div class="loading-prev-box-item"></div>
  30. </div>
  31. </div>
  32. `;
  33. div.innerHTML = htmls;
  34. bodys.insertBefore(div, bodys.childNodes[0]);
  35. },
  36. // 移除 loading
  37. done: () => {
  38. Vue.nextTick(() => {
  39. setTimeout(() => {
  40. const el = document.querySelector('.loading-prev');
  41. el && el.parentNode?.removeChild(el);
  42. }, 1000);
  43. });
  44. },
  45. };