原子类命名遵循「属性-值」映射规律,如mt-4表示margin-top:1rem;前缀(mt、p、bg)对应CSS属性,数值来自预设scale,响应式前缀(md:)为修饰符而非新类名。
原子类不是随意起名的,而是按「属性-值」映射生成的。比如 mt-4 表示 margin-top: 1rem,text-center 对应 text-align: center。框架如 Tailwind、Windi CSS 或 UnoCSS 都遵循这套映射逻辑,只是前缀和分隔符略有差异。
mt = margin-top,mb = margin-bottom,ml = margin-left,mr = margin-rightp- 开头是 padding,bg- 是 background,text- 控制文字样式,flex- 属于 flex 布局相关1→0.25rem,4→1rem),不是随意数字md:text-lg 表示「在 medium 断点及以上生效」,不是新增一类类名,而是修饰已有类
真正写代码时没人靠背熟全部类名。关键在于让编辑器帮你联想、补全、跳转和校验。
tailwind.config.js 中的 content 路径扫描,确保自定义 class 和动态拼接(如 class={`${show ? 'block' : 'hidden'}`)也能被识别@apply 封装高频组合(如 @apply flex items-center justify-between p-4 bg-gray-50 rounded-lg;),只在需要复用或语义化时才提取,不滥用class="mt-2 ml-4 text-sm font-medium text-gray-700" 这种长串——先写结构,再用插件补全,比凭空回忆快得多掌握 20% 的高频类,能覆盖 80% 的日常布局和排版需求。其余类遇到再查,效率更高。
flex / grid / hidden / block / inline / text- 系列(text-sm, text-lg, text-gray-600)/ bg-(bg-white, bg-blue-500)/ px-/py-(px-4, py-2)rounded-tl-md)、阴影深度(shadow-lg)、过渡动画(transition-all)、伪类(hover:bg-blue-600)——它们有固定模式,不用记全,知道存在即可bg-red-100 到 bg-red-900)、所有断点组合(sm:mt-1 md:mt-2 lg:mt-3)——靠插件补全或复制已有用例更可靠用模板字符串或条件表达式拼原子类时,空格和重复 class 是常见 bug 来源。
class="mt-2 ${active ? 'text-blue-600' : 'text-gray-400'}" —— 容易漏空格或加多空格join(' '):class={classes(['mt-2', active && 'text-blue-600', !active && 'text-gray-400']).join(' ')}(配合 clsx 或 twMerge 更稳妥)twMerge 能自动合并冲突 class(如 text-red-500 text-blue-500 → 保留后者),而原生拼接会全部生效导致样式异常