主操作按钮重复 4 次
bg-[#4f46e5]
bg-clinic
品牌颜色跨组件重复,应该获得稳定名字。
Arbitrary Value Clinic
方括号不是坏东西。真正的信号是:同一个值开始反复出现,却还没有名字。勾选病例,看看哪些该留、哪些该升级成 token。
01 / 扫描结果
bg-[#4f46e5]
bg-clinic
品牌颜色跨组件重复,应该获得稳定名字。
rounded-[18px]
rounded-panel
已形成一致组件语言,命名比记住 18px 更可靠。
shadow-[0_12px_30px_rgb(15_23_42/0.18)]
shadow-soft
长参数重复时,复制粘贴最容易悄悄分叉。
w-[37rem]
w-[37rem](保留)
局部、清晰、不会复用,方括号恰好是合适工具。
grid-cols-[minmax(0,1fr)_18rem]
grid-cols-[minmax(0,1fr)_18rem](保留)
下划线会转为空格;这个值描述局部布局,不必硬塞进全局主题。
03 / 重构前后
明天下午三点,一起检查移动端卡片间距和主按钮状态。
重构只替换稳定、重复的值;组件的尺寸和颜色应保持一致。
之前:值藏在类名里
class="
bg-[#4f46e5]
rounded-[18px]
shadow-[0_12px_30px_
rgb(15_23_42/0.18)]
"
之后:类名表达角色
class="
bg-clinic
rounded-panel
shadow-soft
"
@theme {
--color-clinic: #4f46e5;
--radius-panel: 1.125rem;
--shadow-soft:
0 12px 30px rgb(15 23 42 / .18);
}
04 / @utility + VARIANTS
我们没有写死一个“按钮组件”,而是注册两个小能力:pressable 负责按压反馈,action-ring 负责键盘焦点。
@utility action-ring {
outline: 4px solid
color-mix(in oklab,
var(--color-clinic) 38%, white);
outline-offset: 3px;
}
@utility pressable {
transition: transform 160ms;
&:hover { transform: translateY(-2px); }
&:active { transform: translateY(1px); }
}
用鼠标悬停、按住按钮;再按 Tab 把焦点移入。状态文字不会只靠颜色表达。
准备检查 hover、active 与 focus-visible
class="pressable focus-visible:action-ring"