真实面经题目 · 原创解析
TailwindCSS 和 CSS 有什么区别?
这题考察 CSS 工程化理解。回答要说明 CSS 是原生语言,Tailwind 是 utility-first 框架,并比较组织方式、约束、构建和维护成本。
真实面经题目 · 原创解析
这题考察 CSS 工程化理解。回答要说明 CSS 是原生语言,Tailwind 是 utility-first 框架,并比较组织方式、约束、构建和维护成本。
CSS 是浏览器原生样式语言,负责选择器、层叠、布局、响应式、动画和变量等基础能力。TailwindCSS 是基于 CSS 的 utility-first 工具框架,把常见样式抽象成原子类,例如 flex、p-4、text-sm、bg-blue-500,通过在模板中组合类名完成样式,并通过配置统一 spacing、color、font、breakpoint 等设计 token。它的优势是减少命名成本、样式约束一致、开发反馈快、未使用样式可裁剪;代价是 class 较长、语义需要靠组件承载、依赖构建工具,并且复杂状态和复用仍需要组件抽象和 CSS 基础能力。
Tailwind 不是替代 CSS 原理,而是生成和组织 CSS 的方式。最终浏览器执行的仍然是 CSS,所以层叠、盒模型、定位、flex、grid、媒体查询和动画原理仍然要懂。
传统 CSS 通常写语义类名,再在样式文件里描述样式。Tailwind 把样式声明靠近模板,通过原子类组合表达视觉。语义从类名转移到组件名和组件结构上。
Tailwind 通过配置把颜色、间距、字号、断点等限制在设计 token 内,减少随手写 13px、#abc123 这类离散样式。团队规范执行得好时,一致性会更强。
Tailwind 需要扫描源码生成实际用到的 CSS,生产环境可裁剪未使用工具类。代价是构建配置、类名扫描路径、动态类名拼接和编辑器体验都要处理好。
小片段直接写 utility 很快,但复杂重复 UI 不能靠复制一长串 class 维护。应该沉淀组件、抽象 variant,必要时配合 @apply 或普通 CSS,但不要滥用 @apply 把它写回传统 CSS。
回答时要强调 Tailwind 提升的是样式组织和协作效率,不是让候选人不懂 CSS。遇到复杂布局、层叠冲突、响应式和动画问题,底层仍靠 CSS 知识解决。
类名确实会变长,但语义可以通过组件名、组件拆分和 variant 管理。真正的问题不是长,而是重复和无结构复制。
看场景。大多数布局和视觉可以用 utility;复杂动画、第三方覆盖、特殊选择器或无法表达的样式仍可以用 CSS Modules 或普通 CSS。
Tailwind 依赖源码扫描生成 CSS。如果运行时拼出扫描器看不到的完整类名,生产 CSS 里就没有对应样式,需要使用 safelist 或明确枚举。
Tailwind 可以承载设计 token 和基础 utility,但设计系统还包括组件规范、交互状态、可访问性、文案、使用规则和版本治理。