用途:为现有项目添加深色模式、从零搭建主题系统、把硬编码颜色改为语义化令牌、实现系统偏好检测,或构建主题切换组件。
主要能力:采用四层令牌架构——原始令牌(如 --color-blue-500)、语义令牌(如 --color-primary)、主题令牌(亮/暗各自的 --color-bg)与组件令牌(如 --button-bg)。提供亮色与暗色两套语义令牌示例,覆盖背景、表面、文本、边框、交互态、状态色、阴影与遮罩。支持多种切换机制:data-theme 属性(推荐)、CSS 类、仅媒体查询、以及系统加手动覆盖的混合方案。
使用方式:先审计代码库中的颜色使用,定义原始色板,创建语义令牌,定义亮暗主题值,选择切换机制,加入 prefers-color-scheme 系统检测,用 localStorage 或 cookie 持久化,并处理边界情况。可参考 Vanilla JavaScript 的 setTheme/initTheme 实现,在 <head> 内嵌入内联脚本防止错误主题闪烁(FOWT);提供 React 的 ThemeProvider、useTheme、ThemeToggle 示例,以及 Tailwind CSS 的 darkMode 选择器配置。
边界情况:图片可调暗或反色、提供明暗两套资源;SVG 图标推荐用 currentColor;第三方组件需变量覆盖;代码高亮、表单输入与自动填充需单独处理。
可访问性与测试:两种主题均需满足 WCAG AA 对比度、焦点可见、尊重 reduced-motion,持久化用户选择并默认尊重系统偏好。测试清单覆盖亮暗渲染、切换、首次访问系统偏好、跨会话保留、无闪烁、对比度、焦点、图片图标、第三方组件与表单。
限制:资料未提供具体安装命令、官方包名、版本或收费信息。