vben
2023-04-04 08d4e34b778caf6f92f02f038f7230fbfbdea885
提交 | 用户 | 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;
ba2415 37           flex-direction: column;
V 38           align-items: center;
39           justify-content: center;
5db3ce 40           width: 100%;
V 41           height: 100%;
2cdf2c 42           background-color: #f4f7f9;
5db3ce 43         }
V 44
45         .app-loading .app-loading-wrap {
ba2415 46           display: flex;
5db3ce 47           position: absolute;
V 48           top: 50%;
49           left: 50%;
50           flex-direction: column;
ba2415 51           align-items: center;
V 52           justify-content: center;
53           transform: translate3d(-50%, -50%, 0);
5db3ce 54         }
V 55
56         .app-loading .dots {
57           display: flex;
58           align-items: center;
ba2415 59           justify-content: center;
V 60           padding: 98px;
5db3ce 61         }
V 62
63         .app-loading .app-loading-title {
64           display: flex;
65           align-items: center;
ba2415 66           justify-content: center;
V 67           margin-top: 30px;
68           color: rgb(0 0 0 / 85%);
69           font-size: 30px;
5db3ce 70         }
V 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           display: inline-block;
ba2415 81           position: relative;
V 82           box-sizing: border-box;
5db3ce 83           width: 48px;
V 84           height: 48px;
85           margin-top: 30px;
86           transform: rotate(45deg);
ba2415 87           animation: ant-rotate 1.2s infinite linear;
V 88           font-size: 32px;
5db3ce 89         }
V 90
91         .dot i {
92           display: block;
ba2415 93           position: absolute;
5db3ce 94           width: 20px;
V 95           height: 20px;
96           transform: scale(0.75);
97           transform-origin: 50% 50%;
ba2415 98           animation: ant-spin-move 1s infinite linear alternate;
V 99           border-radius: 100%;
100           opacity: 0.3;
101           background-color: #0065cc;
5db3ce 102         }
V 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         }
ba2415 126
V 127         @keyframes ant-rotate {
5db3ce 128           to {
V 129             transform: rotate(405deg);
130           }
131         }
ba2415 132
V 133         @keyframes ant-rotate {
5db3ce 134           to {
V 135             transform: rotate(405deg);
136           }
137         }
ba2415 138
V 139         @keyframes ant-spin-move {
5db3ce 140           to {
ba2415 141             opacity: 1;
5db3ce 142           }
V 143         }
ba2415 144
V 145         @keyframes ant-spin-move {
5db3ce 146           to {
ba2415 147             opacity: 1;
5db3ce 148           }
V 149         }
150       </style>
151       <div class="app-loading">
152         <div class="app-loading-wrap">
99ac30 153           <img src="/resource/img/logo.png" class="app-loading-logo" alt="Logo" />
5db3ce 154           <div class="app-loading-dots">
V 155             <span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
156           </div>
99ac30 157           <div class="app-loading-title"><%= title %></div>
5db3ce 158         </div>
V 159       </div>
4811cc 160     </div>
2f6253 161     <script type="module" src="/src/main.ts"></script>
162   </body>
163 </html>