【T3 样式即数据】
- content/site/theme.yaml 九组白名单旋钮(accent 明暗两值 / radius_img /
text_h1-h3 / prose_size_reading|tech / leading_reading|tech /
space_3-6 / flow_p 与 flow_h2_post / dur);--measure、断点、纸墨、
code 配色按方案 §3.6 红线不开放
- src/lib/theme.ts:getTheme() 钳制 + 单调性校验(h1>h2>h3、
space3<4<5<6 任一不满足整组回落默认);themeVarsCss() 产出
`:root:root{…}` 与 `[data-theme="dark"]:root:root{…}`,靠特异性压过
tokens 的 :root,不依赖注入顺序
- BaseLayout head 内联 `<style is:inline set:html={themeStyle}>`:构建期
静态、运行时零 JS 零请求
- scripts/build-perf/contrast-check.mjs 读产物断言正文/强调 × 亮暗四项
≥4.5:1,不达标 exit 1;build.sh 守卫挂载([ -f ] 守卫先行)
实测:默认 12.40/10.53/6.30/7.06 全过;负例 accent #cccccc → 1.61:1 exit 1
两坑入档:tokens 的 --bg 是 3 位简写需归一化;选 tokens CSS 要用
`--bg:#` 定义断言(includes('--bg') 会误命中 var(--bg-soft) 引用)
- 后台 theme 单例 17 字段全中文 hint + 取值范围(分组约束写进 hint)
【T4 首页去重与细化】
- 新增 src/components/pages/HomePage.astro 承接全部区块(名片区富文本
tagline/subtitle/社交、公告、文章列表、最新影像、热力图、项目墙、
心跳),locale 一统;en 轨吃 postsEn 译题映射、图库链走 /en/gallery/,
心跳仍仅 zh(零回归)
- 两 index.astro 缩成 4 行薄壳,双份漂移隐患消除
- home.yaml 三字段:projectsLimit(1-99 夹取,缺省 6)、announcement
(双语 markdown 走 renderRich,空则不渲染)、postsTracks(三轨开关,
在 HomePage 内过滤而非改 PostList,守边界)
验证: 构建 48 页 exit 0;contrast-check 四项 PASS;E2E 37/37(快照口径);
实测 theme 变量内联、公告 markdown 粗体渲染、projectsLimit 限流、
photo 轨关闭生效;验收数据已还原
Spec: 2026-11-02_blog-5g-pages (T3/T4)
Co-authored-by: GLM-5.3
38 lines
1.1 KiB
YAML
38 lines
1.1 KiB
YAML
# 主题旋钮(样式即数据 · 层 4):只放白名单内的 9 组旋钮。
|
||
# 红线:--measure(版心)与断点/纸墨/code 配色不在此列——它们牵动版面结构与分轨身份。
|
||
# 全部留空 = 沿用 src/styles/tokens.css 的既有值(零配置零变化)。
|
||
# 钳制与单调性在 src/lib/theme.ts 里做:越界值被夹取而非报错,构建不会因主题配置失败。
|
||
|
||
# ① 强调色(明/暗两值;构建期闸门校验正文对比度 ≥4.5,不达标回落默认)
|
||
accent_light: '#3454d1'
|
||
accent_dark: '#8ea2ff'
|
||
|
||
# ② 图片圆角(4–16;08 文档裁定上限 14)
|
||
radius_img: 10
|
||
|
||
# ③ 标题字号(22–32;必须 h1 > h2 > h3,否则整体回落默认)
|
||
text_h1: 27
|
||
text_h2: 22
|
||
text_h3: 19
|
||
|
||
# ④ 正文字号(16–22)
|
||
prose_size_reading: 20
|
||
prose_size_tech: 19
|
||
|
||
# ⑤ 正文行高(1.5–2.0)
|
||
leading_reading: 1.75
|
||
leading_tech: 1.7
|
||
|
||
# ⑥ 间距梯度(8–80;必须严格递增 3 < 4 < 5 < 6,否则回落默认)
|
||
space_3: 16
|
||
space_4: 24
|
||
space_5: 40
|
||
space_6: 64
|
||
|
||
# ⑦ 段落流距(0–2em)
|
||
flow_p: 0.9
|
||
flow_h2_post: 0.6
|
||
|
||
# ⑧ 过渡时长(150–600ms)
|
||
dur: 350
|