跳到正文
Ariia

外观

配色

主题系统是如何工作的

配色 × 明暗两个维度、无闪烁初始化、以及如何新增一套配色。本文仅有中文与英文版本,用于演示缺失译文时的语言切换行为。

约 1 分钟

本文其他语言版本: English

主题由两个相互独立的维度组成,都以 data-* 属性挂在 <html> 上:

  • data-mode:light / dark
  • data-theme:配色名称

defaultoceanforestsakurapaper

无闪烁初始化

<head> 中有一段阻塞执行的内联脚本,在首帧渲染前从 localStorage 读取偏好并设置属性,因此刷新页面不会出现白屏闪烁。

新增配色

  1. 在 src/styles/themes.css 中添加:
[data-theme='mint'] {
  --hue: 170;
  --accent-c: 0.12;
  --neutral-c: 0.01;
}
  1. 在 src/config/themes.ts 中注册 { id: 'mint', swatch: 'oklch(0.6 0.12 170)' }。
  2. 在三个语言词典中添加 theme.palette.mint 文案。

所有语义色(背景、文字、边框、强调色)都由 oklch 公式从色相推导,明暗两套自动生成。