返回博客
设计 2025 年 3 月 8 日 · 阅读时间 7 分钟

为什么我放弃了 Tailwind 的繁重 CSS 框架——以及发生了什么变化

经过多年的特殊性战争和未使用的千字节数的斗争,以下是最终说服我做出转变的原因 - 以及它对我的工作流程和客户的绩效分数产生的可衡量的影响。

艾略特

艾略特

UI/UX 设计师和前端开发人员

带 CSS 的代码编辑器

传统CSS框架的问题

我花了三年时间使用 Bootstrap 和 Bulma 构建项目。它们是很棒的框架——我不会假装不是这样。但我使用它们的时间越长,我就越发现自己在与系统对抗,而不是与它一起工作。

每个新项目都以相同的方式开始:导入框架,立即覆盖一半,编写大量自定义 CSS 来撤消默认值,然后花费 40% 的开发时间调试特异性问题。最终的 CSS 包通常为 80-120kb,其中可能有 15% 被实际使用。

“当你开始写作的那一刻 !重要 为了覆盖框架的默认设置,某些事情已经从根本上出错了。”

是什么让我给 Tailwind 一个适当的机会

我已经对 Tailwind 不屑一顾了很长一段时间。实用程序类方法在 HTML 中看起来很混乱,我确信它会使模板变得不可读。然后一位客户要求我维护现有的 Tailwind 项目,我别无选择。

两周后,我皈依了。这就是改变我想法的原因:

  • 没有上下文切换。 我不再在 HTML 和 CSS 文件之间来回切换。一切都在标记中。
  • 零特异性战争。 实用程序类都是单级选择器。你永远不会与瀑布对抗。
  • 最后的小包。 PurgeCSS(现已内置)意味着生产版本通常为 5-15kb。我的平均大小从 110kb 增加到 8kb。
  • 设计系统就是配置。 间距、颜色、版式——全部集中在 tailwind.config.js.

现实世界的性能影响

我使用 Tailwind CSS + Alpine.js 重建了客户的营销网站,替换了他们的 WordPress + Bootstrap 4 堆栈。一个月后的结果无可辩驳:

  • 灯塔性能评分: 47 → 96
  • CSS 捆绑包: 118kb → 7kb
  • 第一次绘制内容的时间: 3.8s → 0.9s
  • 跳出率: -22%

我仍然怀念传统框架的东西

这并不都是完美的。我仍然需要插件或自定义组件来替换一些东西:

  • 预构建的复杂组件,例如模式、下拉菜单和日期选择器
  • 表单验证样式(尽管 Alpine.js 很好地处理了逻辑方面)
  • 自以为是的网格系统——Tailwind 的网格功能强大,但对于复杂的布局来说却很冗长

生态系统已经基本跟上了。 Headless UI、Flowbite 和 Preline 弥补了大部分空白。 Alpine.js 在不增加重量的情况下完美地处理了交互层。

我的推荐

如果您正在构建任何自定义内容(SaaS 产品、产品组合、登陆页面),Tailwind 是正确的工具。最初的学习曲线大约是一周。之后,您的发货速度将比以前更快。

如果您需要 WordPress 主题或具有最少自定义样式的简单宣传册网站,Bootstrap 仍然非常适合。使用适合工作的正确工具。


如果这有帮助,请与仍在使用 Bootstrap 4 的前端开发朋友分享。🧡