Tianyuan Zhang
2022-07-07 c0e40fa01eef776cca97f7550684a1bc5e6d12ac
提交 | 用户 | age
2f6253 1 <!DOCTYPE html>
5b8eb4 2 <html lang="en" id="htmlRoot">
2f6253 3   <head>
4     <meta charset="UTF-8" />
bb3b8f 5     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
N 6     <meta name="renderer" content="webkit" />
7     <meta
8       name="viewport"
9       content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=0"
10     />
99ac30 11     <title><%= title %></title>
2f6253 12     <link rel="icon" href="/favicon.ico" />
13   </head>
14   <body>
5b8eb4 15     <script>
V 16       (() => {
17         var htmlRoot = document.getElementById('htmlRoot');
215d8b 18         var theme = window.localStorage.getItem('__APP__DARK__MODE__');
V 19         if (htmlRoot && theme) {
20           htmlRoot.setAttribute('data-theme', theme);
21           theme = htmlRoot = null;
22         }
5b8eb4 23       })();
V 24     </script>
4811cc 25     <div id="app">
5db3ce 26       <style>
5b8eb4 27         html[data-theme='dark'] .app-loading {
2cdf2c 28           background-color: #2c344a;
5b8eb4 29         }
V 30
31         html[data-theme='dark'] .app-loading .app-loading-title {
c2b207 32           color: rgb(255 255 255 / 85%);
5b8eb4 33         }
V 34
5db3ce 35         .app-loading {
V 36           display: flex;
37           width: 100%;
38           height: 100%;
39           justify-content: center;
40           align-items: center;
41           flex-direction: column;
2cdf2c 42           background-color: #f4f7f9;
5db3ce 43         }
V 44
45         .app-loading .app-loading-wrap {
46           position: absolute;
47           top: 50%;
48           left: 50%;
49           display: flex;
c2b207 50           transform: translate3d(-50%, -50%, 0);
5db3ce 51           justify-content: center;
V 52           align-items: center;
53           flex-direction: column;
54         }
55
56         .app-loading .dots {
57           display: flex;
58           padding: 98px;
59           justify-content: center;
60           align-items: center;
61         }
62
63         .app-loading .app-loading-title {
64           display: flex;
65           margin-top: 30px;
66           font-size: 30px;
c2b207 67           color: rgb(0 0 0 / 85%);
5db3ce 68           justify-content: center;
V 69           align-items: center;
70         }
71
72         .app-loading .app-loading-logo {
73           display: block;
74           width: 90px;
75           margin: 0 auto;
76           margin-bottom: 20px;
77         }
78
79         .dot {
80           position: relative;
81           display: inline-block;
82           width: 48px;
83           height: 48px;
84           margin-top: 30px;
85           font-size: 32px;
86           transform: rotate(45deg);
87           box-sizing: border-box;
88           animation: antRotate 1.2s infinite linear;
89         }
90
91         .dot i {
92           position: absolute;
93           display: block;
94           width: 20px;
95           height: 20px;
96           background-color: #0065cc;
97           border-radius: 100%;
c2b207 98           opacity: 30%;
5db3ce 99           transform: scale(0.75);
V 100           animation: antSpinMove 1s infinite linear alternate;
101           transform-origin: 50% 50%;
102         }
103
104         .dot i:nth-child(1) {
105           top: 0;
106           left: 0;
107         }
108
109         .dot i:nth-child(2) {
110           top: 0;
111           right: 0;
c2b207 112           animation-delay: 0.4s;
5db3ce 113         }
V 114
115         .dot i:nth-child(3) {
116           right: 0;
117           bottom: 0;
118           animation-delay: 0.8s;
119         }
120
121         .dot i:nth-child(4) {
122           bottom: 0;
123           left: 0;
c2b207 124           animation-delay: 1.2s;
5db3ce 125         }
V 126         @keyframes antRotate {
127           to {
128             transform: rotate(405deg);
129           }
130         }
c2b207 131         @keyframes antRotate {
5db3ce 132           to {
V 133             transform: rotate(405deg);
134           }
135         }
136         @keyframes antSpinMove {
137           to {
c2b207 138             opacity: 100%;
5db3ce 139           }
V 140         }
c2b207 141         @keyframes antSpinMove {
5db3ce 142           to {
c2b207 143             opacity: 100%;
5db3ce 144           }
V 145         }
146       </style>
147       <div class="app-loading">
148         <div class="app-loading-wrap">
99ac30 149           <img src="/resource/img/logo.png" class="app-loading-logo" alt="Logo" />
5db3ce 150           <div class="app-loading-dots">
V 151             <span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
152           </div>
99ac30 153           <div class="app-loading-title"><%= title %></div>
5db3ce 154         </div>
V 155       </div>
4811cc 156     </div>
2f6253 157     <script type="module" src="/src/main.ts"></script>
158   </body>
159 </html>