From 94832e2c825c64036c9d7e9b400809865392830f Mon Sep 17 00:00:00 2001 From: HenryDu8133 <813367384@qq.com> Date: Sat, 12 Sep 2026 12:32:27 +0800 Subject: [PATCH] =?UTF-8?q?fix(ui):=20=E5=BC=BA=E5=88=B6=E6=B5=85=E8=89=B2?= =?UTF-8?q?=E4=B8=BB=E9=A2=98=E4=B8=8E=E7=99=BB=E5=BD=95=E9=A1=B5=E7=BB=86?= =?UTF-8?q?=E8=8A=82=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 主题:将 CSS 变量默认值由深色改为 ClassicLight 浅色基准(背景/文字/边框/按钮/输入框/滚动条),追加 prefers-color-scheme: dark 下的 color-scheme: light 覆盖,补齐 surface-xxx 别名避免部分组件底色色值缺失 - 语言按钮:删除首页顶栏语言切换按钮及其点击处理逻辑 - 第三方登录:OAuthButtons 重写为使用语义化 CSS 变量而非无效的 --border-color,新增 alwaysShow 选项在未配置 provider 时显示占位提示;登录页强制启用提示 - 页脚与登录页:全部文字颜色与分割线由硬编码 rgba(255*) 改为 var(--text-tertiary/quaternary/border-primary),在浅色背景下保证对比度 --- app/assets/css/variables.css | 90 +++++++++------ app/components/Auth/LoginForm.vue | 2 +- app/components/Auth/OAuthButtons.vue | 158 +++++++++++++++++++++++++-- app/components/SiteFooter.vue | 10 +- app/pages/index.vue | 31 +----- app/pages/login.vue | 2 +- 6 files changed, 216 insertions(+), 77 deletions(-) diff --git a/app/assets/css/variables.css b/app/assets/css/variables.css index 30dce2a..88a6536 100644 --- a/app/assets/css/variables.css +++ b/app/assets/css/variables.css @@ -1,10 +1,13 @@ -/* 全局CSS变量 - 统一配色方案 */ +/* 全局CSS变量 - 统一配色方案(默认浅色ClassicLight,不依赖data-theme也能正常显示) */ :root { + /* 强制浅色基准值 - 即使 data-theme 缺失也保持浅色 */ + color-scheme: light; + /* 主色调 */ - --primary: #3b82f6; - --primary-hover: #2563eb; - --primary-light: rgba(59, 130, 246, 0.1); - --primary-border: rgba(59, 130, 246, 0.2); + --primary: #1e40af; + --primary-hover: #1e3a8a; + --primary-light: rgba(30, 64, 175, 0.08); + --primary-border: rgba(30, 64, 175, 0.15); /* 成功色 */ --success: #10b981; @@ -30,25 +33,25 @@ --info-light: rgba(59, 130, 246, 0.1); --info-border: rgba(59, 130, 246, 0.2); - /* 背景色 */ - --bg-primary: #111111; - --bg-secondary: #1a1a1a; - --bg-tertiary: #2a2a2a; - --bg-quaternary: #3a3a3a; - --bg-hover: #1f1f1f; + /* 背景色 (默认 ClassicLight 浅色) */ + --bg-primary: #ffffff; + --bg-secondary: #f5f7fa; + --bg-tertiary: #edf0f5; + --bg-quaternary: #d9dee7; + --bg-hover: #f0f3f8; - /* 文字颜色 */ - --text-primary: #ffffff; - --text-secondary: #cccccc; - --text-tertiary: #888888; - --text-quaternary: #666666; - --text-disabled: #444444; + /* 文字颜色 (默认 ClassicLight 浅色) */ + --text-primary: #1a2332; + --text-secondary: #4a5568; + --text-tertiary: #6b7280; + --text-quaternary: #9ca3af; + --text-disabled: #c5cbd3; - /* 边框颜色 */ - --border-primary: #1f1f1f; - --border-secondary: #2a2a2a; - --border-tertiary: #3a3a3a; - --border-quaternary: #4a4a4a; + /* 边框颜色 (默认 ClassicLight 浅色) */ + --border-primary: #e5e7eb; + --border-secondary: #d1d5db; + --border-tertiary: #9ca3af; + --border-quaternary: #6b7280; /* 阴影 */ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05); @@ -132,16 +135,16 @@ --card-hover-border: var(--border-tertiary); --card-shadow: var(--shadow-md); - /* 按钮颜色 */ + /* 按钮颜色 - 浅色基准 */ --btn-primary-bg: var(--primary); --btn-primary-hover: var(--primary-hover); - --btn-primary-text: var(--text-primary); + --btn-primary-text: #ffffff; --btn-primary-border: var(--primary-border); - --btn-secondary-bg: #3a3a3a; - --btn-secondary-hover: #4a4a4a; - --btn-secondary-text: var(--text-primary); - --btn-secondary-border: #555555; + --btn-secondary-bg: #f1f5f9; + --btn-secondary-hover: #e2e8f0; + --btn-secondary-text: #0f172a; + --btn-secondary-border: #cbd5e1; --btn-success-bg: var(--success); --btn-success-hover: var(--success-hover); @@ -161,12 +164,12 @@ --btn-disabled-bg: var(--bg-tertiary); --btn-disabled-text: var(--text-disabled); - /* 输入框颜色 */ - --input-bg: var(--bg-tertiary); - --input-border: var(--border-tertiary); + /* 输入框颜色 - 浅色基准 */ + --input-bg: #ffffff; + --input-border: #d1d5db; --input-border-focus: var(--primary); --input-text: var(--text-primary); - --input-placeholder: var(--text-quaternary); + --input-placeholder: #9ca3af; --input-shadow-focus: 0 0 0 3px var(--primary-light); /* 模态框颜色 */ @@ -197,12 +200,27 @@ --spinner-primary: var(--primary); --spinner-secondary: var(--bg-tertiary); - /* 滚动条颜色 */ - --scrollbar-track: var(--bg-tertiary); - --scrollbar-thumb: var(--bg-quaternary); - --scrollbar-thumb-hover: #4a4a4a; + /* 滚动条颜色 - 浅色基准 */ + --scrollbar-track: #f1f5f9; + --scrollbar-thumb: #cbd5e1; + --scrollbar-thumb-hover: #94a3b8; + + /* Surface 兼容别名 - 部分按钮/容器使用 surface-xxx */ + --surface-primary: var(--bg-primary); + --surface-secondary: var(--bg-secondary); + --surface-tertiary: var(--bg-tertiary); + --surface-quaternary: var(--bg-quaternary); } +/* 防深色兜底:覆盖 prefers-color-scheme: dark 对表单/根元素的自动影响 */ +@media (prefers-color-scheme: dark) { + :root { + color-scheme: light; + } +} + +/* 浅色主题叠加层(与 data-theme 无关,确保始终为浅色;保留 data-theme 变量覆盖以兼容切换) */ +:root, :root[data-theme='light'], :root[data-theme='ClassicLight'], :root[data-theme='ModernLight'] { diff --git a/app/components/Auth/LoginForm.vue b/app/components/Auth/LoginForm.vue index 4ec8d57..430e302 100644 --- a/app/components/Auth/LoginForm.vue +++ b/app/components/Auth/LoginForm.vue @@ -143,7 +143,7 @@ - +