From 6dcf5822257dc439f53af2a8099ac1472959e491 Mon Sep 17 00:00:00 2001 From: wangjia <809946525@qq.com> Date: Wed, 8 Jul 2026 11:58:35 +0800 Subject: [PATCH] =?UTF-8?q?feat(website):=20=E5=AE=98=E7=BD=91=E5=8A=A0?= =?UTF-8?q?=E6=98=8E/=E6=9A=97=E4=B8=BB=E9=A2=98=E5=88=87=E6=8D=A2(?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E6=B5=85=E8=89=B2,=E6=97=A0=20FOUC)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Header 加 Moon/Sun 切换按钮(.themetoggle class,走语义 token,无内联 style), 切 document.documentElement.dataset.theme + 存 localStorage pg_site_theme, 挂载读回同步;移动端也能切。 - Site.astro + Doc.astro 加 {metaTitle} {desc && } diff --git a/web/website/src/layouts/Site.astro b/web/website/src/layouts/Site.astro index 36a5589..f980b51 100644 --- a/web/website/src/layouts/Site.astro +++ b/web/website/src/layouts/Site.astro @@ -70,6 +70,8 @@ const headerT = { + {/* 首屏渲染前设好 data-theme,避免明/暗切换闪烁(FOUC)。postbuild 会给此内联脚本加 CSP hash。 */} + {t('meta.title')} diff --git a/web/website/src/styles/website.css b/web/website/src/styles/website.css index 2d821b7..5ff90fb 100644 --- a/web/website/src/styles/website.css +++ b/web/website/src/styles/website.css @@ -42,6 +42,11 @@ img,svg{display:block} .linklogin{font-size:14.5px;font-weight:600;color:var(--fg1);cursor:pointer} .linklogin:hover{color:var(--accent)} +/* 明/暗主题切换(顶栏图标按钮,随 token 自适配) */ +.themetoggle{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;flex-shrink:0;border:1.5px solid var(--border-strong);border-radius:var(--radius-full);background:var(--surface);color:var(--fg2);cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)} +.themetoggle:hover{border-color:var(--accent);color:var(--accent)} +.themetoggle svg{width:18px;height:18px} + /* ---------- language dropdown ---------- */ .langwrap{position:relative;display:inline-block} .langsel{display:inline-flex;align-items:center;gap:6px;border:1.5px solid var(--border-strong);border-radius:var(--radius-full);padding:8px 14px;background:var(--surface);color:var(--fg1);font-family:var(--font-sans);font-size:14px;font-weight:600;cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}