主题体系跟上设计令牌化:派生文字色按对比度下限、主题 muted 补到 AA

生成器(dev/theme-builder):
- paletteVars 的 text-secondary/text-muted 从「往底色混 36%/55%」改成 mixToContrast(5.5/4.5):二分找最淡且达标的位置,文字本身不达标就原样返回
- 半透明卡片先 flatten 压平到底色再算对比度;参考背景取「页面底色 + 压平后的卡片」中更不利的
- 配色面板加读数(正文/次要/淡文字/主色),低于 4.5 变橙;默认 primary #4a7fc1(3.69) → #3d6fac(4.63)
- 新增 ?dump=palette 四种配色回归;README 补配色一节

主题/base(含用户本轮 base.css 改动):
- sakura muted #a08c94(2.8:1) → #78696e(4.61)、shiroko #8794a7(2.76:1) → #656e7a(4.63):主题覆盖令牌,基座的 AA 修复到不了主题页
- 深色顶栏链接补 secondary 覆盖:亮色块已是次要文字色,深色块原来 !important 定成正文色,同一顶栏权重跳一档
- _scaffold.css 令牌清单 23 → 29(补 fs 阶梯与 page-position),muted 说明 AA 下限
- StaticVersion 20261021a → 20261021b
This commit is contained in:
tamakyi
2026-10-21 17:42:43 +08:00
parent 54df166d4e
commit db4b3fa095
11 changed files with 317 additions and 21 deletions
+14 -3
View File
@@ -16,7 +16,7 @@
display / flex / grid、position 一律不动 —— 主题不是换皮模板。
3. 本文件不参与构建,仅作参考;真正生效的是同目录下的 <slug>.css。
── 可用的 23 个令牌 ──────────────────────────────────────────────
── 可用的 29 个令牌 ──────────────────────────────────────────────
底色层 --tb-bg 页面底色(html/body)
--tb-surface 卡片、输入框等前景面板
--tb-surface-2 次级面(标签底、进度条轨道、代码块)
@@ -25,13 +25,22 @@
页面底色不是白时建议覆盖成 bg 或它的同色,否则顶栏会成为一条白带)
线条 --tb-border 边框、分隔线
文字 --tb-text 正文
--tb-text-secondary 次要文字(说明、meta)
--tb-text-secondary 次要文字(说明、meta、顶栏链接)
--tb-text-muted 弱化文字(占位、时间戳)
⚠️ 这三个都要满足 WCAG AA 的 4.5:1(对 --tb-bg 与压平后的 --tb-surface 都算)。
往浅调很容易掉到 3:1 以下(旧的 #8a919c 是 3.18:1),肉眼"淡一点"其实已经看不清了。
强调 --tb-primary 主色:链接、主按钮、进度条
--tb-primary-weak 主色 10% 左右的浅底(选中态、标签)
形状 --tb-radius 卡片 12px / --tb-radius-sm 8px / --tb-radius-xs 6px
阴影 --tb-shadow 卡片默认 / --tb-shadow-hover 悬停
字体 --tb-font 字体栈(一般不改)
--tb-fs-xs 12px 标签、脚注、meta
--tb-fs-md 14px 正文、列表、按钮
--tb-fs-lg 16px 区块小标题、卡片标题
--tb-fs-xl 24px 页面标题、大数字
--tb-fs-hero 28px 首页主标题
这套阶梯 base.css 已统一定义,主题一般不要覆盖:
改一档会连带挤坏所有页面的排版,且与主题要解决的问题无关。
页面背景 --tb-page-image 整页背景图(cover,fixed)
--tb-page-pattern 整页图案(平铺,可叠加在背景图之上)
--tb-page-pattern-size 图案平铺尺寸(默认 auto)
@@ -72,7 +81,7 @@ html[data-theme-style="SLUG"] {
--tb-text: #1f2329;
--tb-text-secondary: #5c6370;
--tb-text-muted: #8a919c;
--tb-text-muted: #6b7280; /* AA 下限:白底 4.83:1。别再往浅调 */
--tb-primary: #1e87f0;
--tb-primary-weak: rgba(30, 135, 240, 0.10);
@@ -90,6 +99,7 @@ html[data-theme-style="SLUG"] {
--tb-page-image: none;
--tb-page-pattern: none;
--tb-page-pattern-size: auto;
--tb-page-position: center center; /* cover 裁切时保留哪一侧 */
/* 装饰层(放人物/摆件/光)。固定 10 个槽位,必须写满,缺的填 none——
值一多一少,多背景各列表就错位(会出现整页重复同一张图)。
@@ -126,6 +136,7 @@ html[data-theme="dark"][data-theme-style="SLUG"] {
--tb-page-image: none;
--tb-page-pattern: none;
--tb-page-pattern-size: auto;
--tb-page-position: center center; /* cover 裁切时保留哪一侧 */
}
/* 3) 按页面作用域覆盖(可选)
+2 -1
View File
@@ -14,7 +14,8 @@ html[data-theme-style="sakura"] {
--tb-text: #3a2b30;
--tb-text-secondary: #6b545c;
--tb-text-muted: #a08c94;
/* 弱化文字:旧值 #a08c94 只有 2.8:1(看不清),#78696e 是 4.6:1,踩住 AA 下限 */
--tb-text-muted: #78696e;
--tb-primary: #e5678f;
--tb-primary-weak: rgba(229, 103, 143, 0.12);
+2 -1
View File
@@ -21,7 +21,8 @@ html[data-theme-style="shiroko"] {
--tb-text: #222d3b;
--tb-text-secondary: #51607a;
--tb-text-muted: #8794a7;
/* 弱化文字:旧值 #8794a7 只有 2.76:1(看不清),#656e7a 是 4.63:1,踩住 AA 下限 */
--tb-text-muted: #656e7a;
--tb-primary: #4a7fc1;
--tb-primary-weak: rgba(74, 127, 193, 0.11);