index.html 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <!DOCTYPE html>
  2. <html lang="en" id="htmlRoot">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  6. <meta name="renderer" content="webkit" />
  7. <meta name="viewport"
  8. content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=0" />
  9. <title>
  10. <%= title %>
  11. </title>
  12. <link rel="icon" href="/favicon.ico" />
  13. <link rel="stylesheet" type="text/css" media="print"
  14. href="https://cdn.jsdelivr.net/npm/vue-plugin-hiprint@latest/dist/print-lock.css">
  15. </head>
  16. <body>
  17. <div id="app">
  18. <style>
  19. html[data-theme='dark'] .app-loading {
  20. background-color: #2c344a;
  21. }
  22. html[data-theme='dark'] .app-loading .app-loading-title {
  23. color: rgb(255 255 255 / 85%);
  24. }
  25. .app-loading {
  26. display: flex;
  27. width: 100%;
  28. height: 100%;
  29. justify-content: center;
  30. align-items: center;
  31. flex-direction: column;
  32. background-color: #f4f7f9;
  33. }
  34. .app-loading .app-loading-wrap {
  35. position: absolute;
  36. top: 50%;
  37. left: 50%;
  38. display: flex;
  39. transform: translate3d(-50%, -50%, 0);
  40. justify-content: center;
  41. align-items: center;
  42. flex-direction: column;
  43. }
  44. .app-loading .dots {
  45. display: flex;
  46. padding: 98px;
  47. justify-content: center;
  48. align-items: center;
  49. }
  50. .app-loading .app-loading-title {
  51. display: flex;
  52. margin-top: 30px;
  53. font-size: 30px;
  54. color: rgb(0 0 0 / 85%);
  55. justify-content: center;
  56. align-items: center;
  57. }
  58. .app-loading .app-loading-logo {
  59. display: block;
  60. /* width: 90px; */
  61. margin: 0 auto;
  62. margin-bottom: 20px;
  63. }
  64. .dot {
  65. position: relative;
  66. display: inline-block;
  67. width: 48px;
  68. height: 48px;
  69. margin-top: 30px;
  70. font-size: 32px;
  71. transform: rotate(45deg);
  72. box-sizing: border-box;
  73. animation: antRotate 1.2s infinite linear;
  74. }
  75. .dot i {
  76. position: absolute;
  77. display: block;
  78. width: 20px;
  79. height: 20px;
  80. background-color: #0065cc;
  81. border-radius: 100%;
  82. opacity: 30%;
  83. transform: scale(0.75);
  84. animation: antSpinMove 1s infinite linear alternate;
  85. transform-origin: 50% 50%;
  86. }
  87. .dot i:nth-child(1) {
  88. top: 0;
  89. left: 0;
  90. }
  91. .dot i:nth-child(2) {
  92. top: 0;
  93. right: 0;
  94. animation-delay: 0.4s;
  95. }
  96. .dot i:nth-child(3) {
  97. right: 0;
  98. bottom: 0;
  99. animation-delay: 0.8s;
  100. }
  101. .dot i:nth-child(4) {
  102. bottom: 0;
  103. left: 0;
  104. animation-delay: 1.2s;
  105. }
  106. @keyframes antRotate {
  107. to {
  108. transform: rotate(405deg);
  109. }
  110. }
  111. @keyframes antRotate {
  112. to {
  113. transform: rotate(405deg);
  114. }
  115. }
  116. @keyframes antSpinMove {
  117. to {
  118. opacity: 100%;
  119. }
  120. }
  121. @keyframes antSpinMove {
  122. to {
  123. opacity: 100%;
  124. }
  125. }
  126. </style>
  127. <div class="app-loading">
  128. <div class="app-loading-wrap">
  129. <!-- <img src="/resource/img/logo.svg" class="app-loading-logo" alt="Logo" /> -->
  130. <div class="app-loading-dots">
  131. <span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
  132. </div>
  133. <div class="app-loading-title">
  134. <%= title %>
  135. </div>
  136. </div>
  137. </div>
  138. </div>
  139. <script type="module" src="/src/main.ts"></script>
  140. </body>
  141. </html>