基础样式类

开箱即用的按钮、输入框、开关、卡片样式类,引一个 CSS 文件就有全套控件底子。

global.css 除了设计令牌,还内置了一组高频控件的样式类。轻量插件直接写 class 就有合格的控件外观,不必引组件库、不必手写样式;重度界面则可以与组件库配合使用。

按钮

<button class="btn">默认按钮</button>
<button class="btn btn-solid">主操作</button>
<button class="btn btn-danger">危险操作</button>
<button class="btn btn-sm">小尺寸</button>

<button class="icon-btn" title="复制">
  <span class="i-z-copy w-4 h-4" />
</button>
类说明
.btn中性按钮:内嵌底色 + 发丝线描边,hover 反馈
.btn-solid主色实心,一屏最多出现一个(主操作)
.btn-danger危险色实心,用于删除等不可逆操作
.btn-sm小尺寸修饰,可与上面任意组合
.icon-btn28×28 透明图标按钮,配图标类使用

表单

<input class="input" placeholder="请输入内容" />

<select class="select">
  <option value="a">选项 A</option>
  <option value="b">选项 B</option>
</select>

<label class="flex items-center gap-2 cursor-pointer">
  <input type="checkbox" class="toggle" v-model="enabled" />
  <span class="toggle-slider" />
  <span>开机自动同步</span>
</label>
类说明
.input文本输入框:--field 底色、聚焦时主色光圈(--focus-ring)
.select下拉框:与 .input 同构,原生弹出面板跟随系统明暗
.toggle + .toggle-slider开关:checkbox 驱动,选中态主色。两个元素必须成对出现

卡片与浮层

<div class="card p-4">
  <h3 class="text-sm font-medium">卡片标题</h3>
  <p class="text-xs text-[var(--ink-2)] mt-1">卡片说明文字</p>
</div>
类说明
.card--surface 底色 + --radius-lg 圆角,内容区最常用的容器
.floating-shell / .floating-panel无边框浮窗形态:大圆角 + 四周留边投影,做脱离宿主的悬浮小窗时使用

全局细节

这些是 global.css 顺手处理好的事,知道即可,不用自己做:

  • 高度链:html、body、#app 均为 height: 100%,插件根布局可以直接用百分比高度撑满。
  • 正文排版:body 上设定 14px / 1.5 倍行距 / --ink 文字色 / --bg-color 底色。
  • 文本选中:选中态是主色 22% 透明度,不再是默认的浏览器蓝。
  • 键盘焦点::focus-visible 显主色焦点环(鼠标点击不显示,键盘导航才显示)。
  • 滚动条:6px 窄滚动条,圆角 thumb,hover 加深,track 透明——与宿主完全一致。

与 UnoCSS 配合

工程里配好 UnoCSS 后(见图标体系的完整配置),原子类与这组样式类可以混用:

<div class="card p-4 flex items-center justify-between">
  <div>
    <p class="text-sm text-[var(--ink)]">自动保存</p>
    <p class="text-xs text-[var(--ink-2)] mt-0.5">每 30 秒同步一次</p>
  </div>
  <input type="checkbox" class="toggle" v-model="autoSave" />
  <span class="toggle-slider" />
</div>
.toggle 与 .toggle-slider 必须相邻(样式选择器是 input:checked + .toggle-slider),中间插别的元素开关就不动了。

控件之外还需要更复杂的组件(消息提示、确认弹窗、快捷键录制……)?看通用组件。