From b6fcbc6e735cbfc12d8af7ed8533fc99c9b32829 Mon Sep 17 00:00:00 2001
From: xingyuv <xingyu4j@vip.qq.com>
Date: Fri, 14 Apr 2023 15:44:24 +0800
Subject: [PATCH] fix: dark

---
 index.html | 123 +++++++++++++++++++++++++++++++----------------------
 1 file changed, 72 insertions(+), 51 deletions(-)

diff --git a/index.html b/index.html
index 1ceb150a..09e0d2c7 100644
--- a/index.html
+++ b/index.html
@@ -1,20 +1,25 @@
 <!DOCTYPE html>
-<html lang="en">
+<html lang="en" id="htmlRoot">
   <head>
     <meta charset="UTF-8" />
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
     <meta name="renderer" content="webkit" />
-    <meta
-      name="viewport"
-      content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=0"
-    />
-    <!-- 由 vite 注入 VITE_GLOB_APP_TITLE 变量,在 .env 内配置 -->
-    <title><%= VITE_GLOB_APP_TITLE %></title>
+    <meta name="viewport" content="width=device-width,initial-scale=1.0" />
+    <title>%VITE_GLOB_APP_TITLE%</title>
     <link rel="icon" href="/favicon.ico" />
   </head>
   <body>
+    <script>
+      (() => {
+        var htmlRoot = document.getElementById('htmlRoot');
+        var theme = window.localStorage.getItem('__APP__DARK__MODE__');
+        if (htmlRoot && theme) {
+          htmlRoot.setAttribute('data-theme', theme);
+          theme = htmlRoot = null;
+        }
+      })();
+    </script>
     <div id="app">
-      <!-- 页面加载后会删除 loading 节点,所以无需担心污染 -->
       <style>
         html[data-theme='dark'] .app-loading {
           background-color: #2c344a;
@@ -24,109 +29,125 @@
           color: rgb(255 255 255 / 85%);
         }
 
-        .loading {
+        .app-loading {
           display: flex;
-          position: fixed;
+          width: 100%;
+          height: 100%;
+          justify-content: center;
+          align-items: center;
+          flex-direction: column;
+          background-color: #f4f7f9;
+        }
+
+        .app-loading .app-loading-wrap {
+          position: absolute;
           top: 50%;
           left: 50%;
-          flex-direction: column;
-          align-items: center;
-          justify-content: center;
+          display: flex;
           transform: translate3d(-50%, -50%, 0);
+          justify-content: center;
+          align-items: center;
+          flex-direction: column;
         }
 
-        .logo {
-          display: block;
-          width: 100px;
-          margin: 0 auto;
-          margin-bottom: 10px;
+        .app-loading .dots {
+          display: flex;
+          padding: 98px;
+          justify-content: center;
+          align-items: center;
         }
 
-        .title {
+        .app-loading .app-loading-title {
           display: flex;
-          align-items: center;
-          justify-content: center;
           margin-top: 30px;
-          color: rgb(0 0 0 / 85%);
           font-size: 30px;
+          color: rgb(0 0 0 / 85%);
+          justify-content: center;
+          align-items: center;
         }
 
-        .dots {
-          display: inline-block;
+        .app-loading .app-loading-logo {
+          display: block;
+          width: 90px;
+          margin: 0 auto 20px;
+        }
+
+        .dot {
           position: relative;
-          box-sizing: border-box;
+          display: inline-block;
           width: 48px;
           height: 48px;
           margin-top: 30px;
-          transform: rotate(45deg);
-          animation: rotate 1s infinite linear;
           font-size: 32px;
+          transform: rotate(45deg);
+          box-sizing: border-box;
+          animation: antRotate 1.2s infinite linear;
         }
 
-        .dots i {
-          display: block;
+        .dot i {
           position: absolute;
+          display: block;
           width: 20px;
           height: 20px;
+          background-color: #0065cc;
+          border-radius: 100%;
+          opacity: 30%;
           transform: scale(0.75);
+          animation: antSpinMove 1s infinite linear alternate;
           transform-origin: 50% 50%;
-          animation: spin-move 1s infinite linear alternate;
-          border-radius: 100%;
-          opacity: 0.3;
-          background-color: #0065cc;
         }
 
-        .dots i:nth-child(1) {
+        .dot i:nth-child(1) {
           top: 0;
           left: 0;
         }
 
-        .dots i:nth-child(2) {
+        .dot i:nth-child(2) {
           top: 0;
           right: 0;
           animation-delay: 0.4s;
         }
 
-        .dots i:nth-child(3) {
+        .dot i:nth-child(3) {
           right: 0;
           bottom: 0;
           animation-delay: 0.8s;
         }
 
-        .dots i:nth-child(4) {
+        .dot i:nth-child(4) {
           bottom: 0;
           left: 0;
           animation-delay: 1.2s;
         }
-
-        @keyframes rotate {
+        @keyframes antRotate {
           to {
             transform: rotate(405deg);
           }
         }
-
-        @keyframes rotate {
+        @keyframes antRotate {
           to {
             transform: rotate(405deg);
           }
         }
-
-        @keyframes spin-move {
+        @keyframes antSpinMove {
           to {
-            opacity: 1;
+            opacity: 100%;
           }
         }
-
-        @keyframes spin-move {
+        @keyframes antSpinMove {
           to {
-            opacity: 1;
+            opacity: 100%;
           }
         }
       </style>
-      <div class="loading">
-        <img src="/resource/img//logo.png" class="logo" alt="Logo" />
-        <span class="dots"><i></i><i></i><i></i><i></i></span>
-        <div class="title"><%= VITE_GLOB_APP_TITLE %></div>
+      <div class="app-loading">
+        <div class="app-loading-wrap">
+          <img src="/resource/img/logo.png" class="app-loading-logo" alt="Logo" />
+          <div class="app-loading-dots">
+            <span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
+          </div>
+          <div class="app-loading-title">%VITE_GLOB_APP_TITLE%</div>
+        </div>
       </div>
     </div>
     <script type="module" src="/src/main.ts"></script>