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