在一个月前,我选择了 Tailwind CSS 用于一个企业官网的开发。一个月后,项目经过了几次小版本迭代,我对 Tailwind CSS 的使用小有心得。本文将阐述我在企业开发中使用 Tailwind CSS 后对它的看法。
Tailwind CSS 是一个高度可定制的 CSS 框架,它旨在帮助开发人员快速构建现代化、响应式的网页界面。与其他框架如Bootstrap不同,Tailwind CSS 不依赖于预定义的样式类,而是提供一组原子级的样式类,开发人员可以根据需要自由组合这些类来构建页面。
Tailwind CSS 的核心概念是原子级类,每个类都对应一个具体的样式属性或操作,例如字体大小、颜色、边距、宽度等。通过组合这些类,可以快速地定义所需的样式,并实现样式的可复用性和可定制性。
使用 Tailwind CSS,开发人员可以避免编写大量重复的 CSS 代码,而是直接使用预定义的类进行构建,从而提高开发效率。同时,由于每个类只负责一个具体的样式属性,因此更容易理解和维护。
Tailwind CSS 还提供了一套强大的工具和插件,用于辅助开发过程,例如响应式布局、动画效果、自定义主题等。它还支持通过配置文件进行项目定制,开发人员可以根据项目需求选择性地启用或禁用某些特性。
总之,Tailwind CSS 是一个灵活、高效、可扩展的 CSS 框架,旨在帮助开发人员快速构建现代化的网页界面。
使用 Tailwind CSS 后,开发人员可以避免为 CSS 类命名而烦恼的情况,因为它采用了一种基于原子级类的设计思想。这意味着每个类只负责一个具体的样式属性或操作,例如 text-red-500 表示文本颜色为红色,并且颜色值为 500。
由于每个类都是原子级别的,不需要为每个元素编写自定义的类名,而是直接通过将各种类组合在一起来构建所需的样式。这种方式具有高度的可复用性和可维护性,使开发人员可以更快地编写样式。
这点要分情况讨论,对于没有 UI 设计师的团队来说,Tailwind CSS 在提供了基础方案的同时又提供了简便的自定义方案的能力,即便没有设计师,开发者可以很简单地写出有“及格分”的页面。
对于有 UI 设计师的团队来说,往往会使用蓝湖与 Figma 这样的工具,设计图本身拥有显示 CSS 代码的能力,通常复制代码后只需要小小修改即可使用,使用 Tailwind CSS 来手写反而降低了效率。
项目的样式细节划分为一系列原子类,例如颜色、尺寸、间距、字体样式等。理论上使用原子类后,页面的样式风格会更统一。然而,前端开发者可能面临的一个窘境是设计图本身并没有统一。一些设计过于注重细节而忽视了整体上的统一,在遵循语义化规则时可能被忽视,一旦使用原子类问题就显而易见。
以字号为例,理想状态是字号大小使用固定的方案,例如:
类名 | 属性 |
text-xs | font-size: 0.75rem; /* 12px / line-height: 1rem; / 16px */ |
text-sm | font-size: 0.875rem; /* 14px / line-height: 1.25rem; / 20px */ |
text-base | font-size: 1rem; /* 16px / line-height: 1.5rem; / 24px */ |
text-lg | font-size: 1.125rem; /* 18px / line-height: 1.75rem; / 28px */ |
text-xl | font-size: 1.25rem; /* 20px / line-height: 1.75rem; / 28px */ |
text-2xl | font-size: 1.5rem; /* 24px / line-height: 2rem; / 32px */ |
text-3xl | font-size: 1.875rem; /* 30px / line-height: 2.25rem; / 36px */ |
text-4xl | font-size: 2.25rem; /* 36px / line-height: 2.5rem; / 40px */ |
text-5xl | font-size: 3rem; /* 48px */ line-height: 1; |
text-6xl | font-size: 3.75rem; /* 60px */ line-height: 1; |
text-7xl | font-size: 4.5rem; /* 72px */ line-height: 1; |
text-8xl | font-size: 6rem; /* 96px */ line-height: 1; |
text-9xl | font-size: 8rem; /* 128px */ line-height: 1; |
然而实际情况是也许设计师本身并不清楚项目字号究竟有多少种,可能存在22、26、28,也可能存在32、34,甚至奇数大小的字号也会存在。而 line-height的数值更是随心所欲,原因可能仅仅是因为在这个地方看起来好看。
碰到这样的问题,开发者又陷入了新的命名困难中。心想干脆摆烂所有地方使用text-[14px]这样的任意值,但这又失去了希望风格统一、便于管理的初衷。
之所以单独拿出来讲这点,是因为这是我在选型时未考虑到的。但是在改版变成响应式设计中觉得很便利的一点,例如:
grid grid-cols-1 md:grid-cols-2 gap-x-3 gap-y-4;
很简单地创建了一个网格布局,如果使用媒体查询,代码量会多很多。
引用知乎上《为什么国内类似 Tailwind CSS 这样的方案没有流行起来?》回答下的一段话。
主要看前端开发工作在进行复用和组合时的颗粒度大小。Tailwind 是一个很具体的颗粒度,如果一个项目所需的颗粒度比它大或比它小,用起来的体验都不是最优的。
对于老一点、成熟一点的公司来说,早就有自己的设计体系和对应的前端组件库了,复用和组合的颗粒是组件。例如说,我们全公司都规定了按钮长这个样子、两个水平并排的按钮间隔这么多、移动版两个垂直堆叠的按钮之间间隔这么多,那还有 Tailwind 什么事情?
……
Tailwind 适合的是新生代的公司,还没有自己的设计体系,要从零开始做一套自己的。这时候 Tailwind 的优势就出来了:你还没有自己的组件对吧?那你要用更小颗粒度的东西先搭出来通用组件吧?这个更小颗粒度的东西到底是什么呢?就是 HTML 元素和 CSS 样式了。
作者:Cat Chen 链接:www.zhihu.com/question/50… 来源:知乎
对于成熟公司来说,早有自己的开发体系与组件库,不可能也没必要用 Tailwind CSS 重新来过;而对于中小公司来说,过于注重局部而忽视整体的设计,使用原子类是对开发者的折磨。毕竟,前端开发本身缺少话语权,照着设计图来做就完事了。
总而言之,设计规范越明确,Tailwind CSS 用起来越顺手。
作者:无声2017
链接:
https://juejin.cn/post/7284417436752904253