From 137f3e7988a5b8658492d075bb220889f0e30e3d Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Tue, 13 Jan 2026 22:42:14 +0800 Subject: [PATCH] update --- index.html | 13 +- main.js | 49 ++- public/备案图标.png | Bin 1403 -> 0 bytes style.css | 743 +++++++++++++++++++++++++++++++++++++++----- 4 files changed, 710 insertions(+), 95 deletions(-) delete mode 100644 public/备案图标.png diff --git a/index.html b/index.html index c1529a1..6048656 100644 --- a/index.html +++ b/index.html @@ -30,12 +30,15 @@ tabindex="-1" hidden > -
  • 流光
  • -
  • 极光
  • -
  • 森林
  • -
  • 日落
  • +
  • Fluent
  • +
  • + Material You +
  • - 终端 + Terminal +
  • +
  • + Cyberpunk
  • diff --git a/main.js b/main.js index e5433be..b1d2027 100644 --- a/main.js +++ b/main.js @@ -85,7 +85,9 @@ const themeToggle = document.getElementById("themeToggle") const designThemeButton = document.getElementById("designThemeButton") const designThemeList = document.getElementById("designThemeList") -const DESIGN_THEMES = ["fluent", "aurora", "forest", "sunset", "terminal"] +const DESIGN_THEMES = ["fluent", "material-you", "terminal", "cyberpunk"] +const FORCED_DARK_DESIGN_THEMES = new Set(["terminal", "cyberpunk"]) +const THEME_BEFORE_FORCED_KEY = "themeBeforeForcedDark" // 获取保存的主题或系统偏好 function getInitialTheme() { @@ -108,11 +110,9 @@ function setTheme(theme) { // 切换主题 function toggleTheme() { - if ( - document.documentElement.getAttribute("data-design-theme") === "terminal" - ) { - return - } + const designTheme = + document.documentElement.getAttribute("data-design-theme") || "fluent" + if (FORCED_DARK_DESIGN_THEMES.has(designTheme)) return const currentTheme = document.documentElement.getAttribute("data-theme") || "light" const newTheme = currentTheme === "dark" ? "light" : "dark" @@ -136,20 +136,32 @@ function setDesignTheme(designTheme) { document.documentElement.setAttribute("data-design-theme", safeDesignTheme) localStorage.setItem("designTheme", safeDesignTheme) - if (safeDesignTheme === "terminal") { - if (previousDesignTheme !== "terminal") { + const willForceDark = FORCED_DARK_DESIGN_THEMES.has(safeDesignTheme) + const didForceDark = FORCED_DARK_DESIGN_THEMES.has(previousDesignTheme) + + if (willForceDark) { + if (!didForceDark) { const currentTheme = document.documentElement.getAttribute("data-theme") || "light" - localStorage.setItem("themeBeforeTerminal", currentTheme) + localStorage.setItem(THEME_BEFORE_FORCED_KEY, currentTheme) } setTheme("dark") - } else if (previousDesignTheme === "terminal") { - const restoreTheme = localStorage.getItem("themeBeforeTerminal") + } else if (didForceDark) { + const restoreTheme = + localStorage.getItem(THEME_BEFORE_FORCED_KEY) || + localStorage.getItem("themeBeforeTerminal") if (restoreTheme === "dark" || restoreTheme === "light") { setTheme(restoreTheme) } + localStorage.removeItem(THEME_BEFORE_FORCED_KEY) localStorage.removeItem("themeBeforeTerminal") } + + if (themeToggle) { + themeToggle.disabled = willForceDark + themeToggle.setAttribute("aria-disabled", willForceDark ? "true" : "false") + themeToggle.tabIndex = willForceDark ? -1 : 0 + } } function getDesignThemeLabel(designTheme) { @@ -159,10 +171,9 @@ function getDesignThemeLabel(designTheme) { if (optionEl) return optionEl.textContent?.trim() || "流光" const fallback = { fluent: "流光", - aurora: "极光", - forest: "森林", - sunset: "日落", + "material-you": "Material You", terminal: "终端", + cyberpunk: "Cyberpunk", } return fallback[designTheme] || "流光" } @@ -194,6 +205,16 @@ function getCurrentDesignTheme() { return document.documentElement.getAttribute("data-design-theme") || "fluent" } +const titleEl = document.querySelector(".title") +if (titleEl && !titleEl.dataset.text) { + titleEl.dataset.text = titleEl.textContent?.trim() || "" +} + +const subtitleEl = document.querySelector(".subtitle") +if (subtitleEl && !subtitleEl.dataset.text) { + subtitleEl.dataset.text = subtitleEl.textContent?.trim() || "" +} + // 初始化主题 const initialTheme = getInitialTheme() setTheme(initialTheme) diff --git a/public/备案图标.png b/public/备案图标.png deleted file mode 100644 index 2a13ba2f4b92c4b531945a66e3e35e3ead3739f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1403 zcmV->1%&#EP)OmFb0;G+d=2euy)cVjh{yJKZrd}noklB1~I~M zd*Iw5A@r@E47IO}f%*@p@Jx)Mdh7(KwK9h?&H%c+rbB*i1aRDTI20QU&l)3V6a5Y9 zt}ZYoLj`MYk|T#A7~w_+L-y{4&}u&!WZY<|pJEIR0yEx1Uj3A};EwJdNrUZFkX8l* zHzEMS!$N`e#$JPgJ~RCcs?G=sAOmNu899?20~{9tS;_A3OOz#4aigG2I0I^r2|!us z49#&4Q2mAxbnlo4RX29P@XC_nqk&1>K&!}%*3Y1(+}IODb9^2n#p&U|879DXA0K#D zWCyt`&7s8h9jNo01F|3+kc$^U!+v{Uts5b9lQ(c&C=}=KgZ_()Kvj4+ML&aNKZx6i zJl2Yl2ju}^YI__;juOLFM+@kT5@VldO3ezHkB9?S>Aj#VY+}m;B$XP?? zxN%T4$p}iOy$+QxG_IHqmA13M-@p>M@nKM&69R)Z0ie9J2DDXslk_!c&n?oFu$Yn7 z)OEmWd?Ds=G7Nu8xDmcQZUZ=ta{}+lt6?nX2^_cOg%H>o76q))6WX$Q%Ja*it2DIe z|DeAVq%H{`B+^svj5H*;g7T;U9#)8bLc4Yg{E`D zE~35ntsT+-p#J;&bICyKE=GE!LC~7x1**#)pvmVcFRlhnp%?Eb7f_t|7@BnlgS21q z;L&<@v{ioaNVSuvIdXyMe-LZ0G$Ng{n4?6MC+sKcE2|iJSmp*j*H(ija|LL1*N8fO z84Rzqr_=+~1y0ae?gQP5-7Tb7eL9>l7HL5AKj`-(OAee!Dq=i5$<0XHZ-^q*rG&^& zI@b_onyZSavqhjd_h|{~$QS34uIl3li8MWWDPfVifXF`&_zeY2VF9#&n4