index.html 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <!DOCTYPE html>
  2. <html lang="zh-cmn-Hans" id="htmlRoot" data-theme="light">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible" />
  6. <meta content="webkit" name="renderer" />
  7. <meta content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=0"
  8. name="viewport" />
  9. <link href="/favicon.ico" rel="icon" />
  10. <title>
  11. <%= title %>
  12. </title>
  13. </head>
  14. <body>
  15. <div id="app">
  16. <style>
  17. .first-loading-wrap {
  18. display: flex;
  19. width: 100%;
  20. height: 100vh;
  21. justify-content: center;
  22. align-items: center;
  23. flex-direction: column;
  24. }
  25. .first-loading-wrap>h1 {
  26. font-size: 128px;
  27. }
  28. .first-loading-wrap .loading-wrap {
  29. padding: 98px;
  30. display: flex;
  31. justify-content: center;
  32. align-items: center;
  33. }
  34. .dot {
  35. animation: antRotate 1.2s infinite linear;
  36. transform: rotate(45deg);
  37. position: relative;
  38. display: inline-block;
  39. font-size: 32px;
  40. width: 32px;
  41. height: 32px;
  42. box-sizing: border-box;
  43. }
  44. .dot i {
  45. width: 14px;
  46. height: 14px;
  47. position: absolute;
  48. display: block;
  49. background-color: #1890ff;
  50. border-radius: 100%;
  51. transform: scale(0.75);
  52. transform-origin: 50% 50%;
  53. opacity: 0.3;
  54. animation: antSpinMove 1s infinite linear alternate;
  55. }
  56. .dot i:nth-child(1) {
  57. top: 0;
  58. left: 0;
  59. }
  60. .dot i:nth-child(2) {
  61. top: 0;
  62. right: 0;
  63. -webkit-animation-delay: 0.4s;
  64. animation-delay: 0.4s;
  65. }
  66. .dot i:nth-child(3) {
  67. right: 0;
  68. bottom: 0;
  69. -webkit-animation-delay: 0.8s;
  70. animation-delay: 0.8s;
  71. }
  72. .dot i:nth-child(4) {
  73. bottom: 0;
  74. left: 0;
  75. -webkit-animation-delay: 1.2s;
  76. animation-delay: 1.2s;
  77. }
  78. @keyframes antRotate {
  79. to {
  80. -webkit-transform: rotate(405deg);
  81. transform: rotate(405deg);
  82. }
  83. }
  84. @-webkit-keyframes antRotate {
  85. to {
  86. -webkit-transform: rotate(405deg);
  87. transform: rotate(405deg);
  88. }
  89. }
  90. @keyframes antSpinMove {
  91. to {
  92. opacity: 1;
  93. }
  94. }
  95. @-webkit-keyframes antSpinMove {
  96. to {
  97. opacity: 1;
  98. }
  99. }
  100. </style>
  101. <div class="first-loading-wrap">
  102. <div class="loading-wrap">
  103. <span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
  104. </div>
  105. </div>
  106. </div>
  107. <div class="versionHash">
  108. <span>version hash: <%= hash %></span>
  109. <style>
  110. .versionHash {
  111. position: fixed;
  112. bottom: 10px;
  113. right: 20px;
  114. font-size: 12px;
  115. color: #ccc;
  116. z-index: 10000;
  117. }
  118. </style>
  119. </div>
  120. <script>
  121. var globalThis = window;
  122. </script>
  123. <script src="/src/main.ts" type="module"></script>
  124. </body>
  125. </html>