Skip to content

UnoCSS 主题

主题色作为 CSS 变量注入,由 UnoCSS 派生工具类。模板里直接写 class="text-primary bg-primary-100" 即可。

UnoCSS 配置在 web/uno.config.ts

使用主题色

html
<!-- 文字 / 背景 / 边框 -->
<span class="text-primary">主题色文字</span>
<div class="bg-primary-100 border border-primary">浅主题色背景</div>

<!-- 语义色 -->
<button class="bg-success text-white">提交</button>
<button class="bg-error text-white">删除</button>
<NTag class="text-warning">警告</NTag>

11 级色阶

用途示例
50 / 100 / 200浅色背景、悬浮态
300 / 400边框、icon
500默认色(同 primary 不带后缀)
600 / 700文字、强调
800 / 900 / 950dark 模式背景 / 深色文字
html
<div class="bg-primary-50 dark:bg-primary-950">
  <p class="text-primary-700 dark:text-primary-200">...</p>
</div>

暗黑模式

html
<div class="bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100">
  light/dark 自动切换
</div>

策略 dark: 'class':依赖 <html class="dark">,由 useThemeStore 切换。

自定义工具类

需要新增项目级工具类(如 text-balance),在 uno.config.tsshortcuts / rules 里加:

typescript
shortcuts: [
  ['flex-center', 'flex items-center justify-center'],
  ['card', 'bg-white dark:bg-gray-800 rounded-lg shadow p-4'],
],

主题色之外的色板

UnoCSS preset 自带 Tailwind 色板(gray / red / blue / ...,每种 50–950)。业务里优先用语义色primary / success / warning / error / info),让全局换肤时一并生效;只在需要"和主题色无关"的颜色时用具体色板。

性能

UnoCSS 是按需生成——只有模板里用到的 class 才会出现在最终 CSS 中。可放心使用大量工具类,无需担心 CSS 体积。

调试

打开 Chrome devtools 看元素的 computed style,CSS 变量都在 :root 层。改 --primary-color 立刻看到全站颜色变化(用于验证主题工具类是否接到 CSS 变量)。

相关

基于 MIT 协议发布