十分钟快速上手TailwindCss
十分钟快速上手TailwindCss
Vapaus Qi前言
TailwindCss最近确实是非常火,部门内的多个新增项目已经从开始的css预编译器转换到了TailwindCss或者UnoCss,进行试用。本文先跟我快速上手一下tailwindcss,另外预定下一篇文章主题是UnoCss(这个框架有部分同事觉得非常好用)。
其实在我刚开始用的时候,我也会觉得,这怎么写了一坨么,怎么维护,但后来越写越流畅,啊,真香。
TailwindCss
简介
Tailwind CSS 是一个用于快速构建现代网站和应用程序的实用工具优先的 CSS 框架。它提供了一套丰富的 CSS 类,可以用于快速构建各种 UI 组件。这意味着你可以根据自己的需求,选择使用哪些 CSS 类,而不是被迫使用所有的 CSS 类。这使得 Tailwind CSS 的 CSS 文件非常小,可以快速加载和渲染页面。
Tailwind CSS 自从开源以来,用户社区就非常活跃,社区贡献的组件库也非常丰富,至于有多火,目前为止github上已经有82.5k star了。
快速上手
TailwindCss中最大的特性就是,它是一个原子化的css框架。
我们传统的css代码是这样写的
1 | <div class="aaa"></div> |
对应的css是这样写的
1 | .aaa { |
而在TailwindCss中,将每一个css属性都拆分成了单独的类,也就是保持每一个类的原子化属性,不会对其他的类产生影响。在TaliwindCss中,我们只需要这样写
1 | <div class="w-4 h-4 text-sm"></div> |
其中 w-4 和 width: 16px对应,h-4 和 height: 16px对应,text-sm 和 font-size: 14px对应。如果你不想定义w-4代表的是16px,你可以自定义,比如w-4代表的是20px,只需要在配置文件中修改一下配置即可。 而tailWindCss中提供了大量这种原子类来支持我们快速编写样式。
下面我们从头在工程中引入tailWindCss来使用。
安装及配置
我是基于vite + react创建了一个基础工程,在工程基础上,引入tailwindCss:
1 | npm install -D tailwindcss |
其中tailwindcss init会生成一个tailwind.config.js文件,这个文件就是tailwindCss的配置文件,其中包含了tailwindCss的配置信息,比如主题、插件等等。接着在生成的配置文件中,添加模板路径:
1 | /** @type {import('tailwindcss').Config} */ |
使用
接下来,我们就可以在项目中使用tailwindcss了,启用项目看一下我们刚才写的代码。
1 | <div className="w-full h-12 text-base bg-gray-200"> |
可以看到,我们刚才写的代码,已经生效了,并且样式也生效了。这里的 h-12 代表的是 height: 3rem; /* 48px */,也就是说tailwindCss为我们内置默认的根元素字体大小是16px,更多的内置样式可以参考官方文档。
如果我们想修改根元素字体大小,可以在配置文件中修改:
1 | module.exports = { |
除了上面最基础的css,我们在日常开发中还会用到伪类和伪元素,下面简单介绍一下其使用方法:
hover 伪类可以直接通过 hover: 前缀来实现。
1 | <button class="bg-blue-500 text-white hover:bg-blue-700"> |
使用after 创建一个内容后的伪元素。
1 | <div class="relative after:content-['*'] after:absolute after:top-0 after:right-0 after:text-red-500"> |
- after:content-[‘*’]:使用 ::after 伪元素并设置其内容为星号 *。
- after:absolute:将 ::after 伪元素设置为绝对定位。
- after:top-0 after:right-0:将伪元素的位置设置在右上角。
- after:text-red-500:伪元素的颜色为红色。
另外,在我们开发响应式页面的时候,需要根据不同大小设置不同样式,同样tailwindcss也为我们内置了对应的断点原子类
1 | <div className="w-full h-12 text-base bg-gray-200 md:bg-blue-400"> |
其中 md:bg-blue-400 代表的是在md断点下,背景色为蓝色。md代表的是max-width: 768px;超过这个断点,背景色就会变成蓝色。其实现原理也就是通过@media做媒体查询来设置不同样式。
以上就能解决我们在日常开发中遇到的大多数问题了,不过难免会遇到一些多个重复样式需要组合的情况,这个时候就需要用到自定义指令了。
1 | <div> |
比如我们有多个同样的div样式,这样每次修改就比较麻烦,最好通过自定义指令抽离成我们公共的样式,可以通过@layer或者 @apply 指令来扩展
1 | @tailwind base; |
这样该样式就可以直接通过 my-div 来使用了。
1 | <div> |
实现原理
tailwindcss是通过postcss-preset-tailwind来实现的,其核心原理就是通过解析css文件,将css文件中的class名称替换成对应的css样式。
所以说,tailwind 本质上就是个 postcss 插件。
postcss 是一个 css 编译器,它是 parse、transform、generate 的流程。
而 postcss 就是通过 AST 来拿到 @tailwind、@layer、@apply 这些它扩展的指令,分别作相应的处理,也就是对 AST 的增删改查。
总结
以上内容阅读之后,基本上就可以在项目中畅通无阻的使用tailwindcss了。总结下来tailwindCss的优缺点还是比较明显的:
优点:
- 开发效率高,提供大量内置工具类
- 高度灵活,支持响应式设计与自定义配置
- 避免命名冲突,且能生成较小的生产环境 CSS 文件
缺点:
- 可能导致 HTML 杂乱,初期学习成本较高
- 违反了传统的关注点分离,难以复用复杂样式
- 对某些高度定制化设计支持较弱
个人感觉其比较适用以下场景:
- 小型或中型项目:由于开发效率高,小型到中型项目可以快速构建和迭代。
- 产品快速原型设计:借助大量的预设样式,能够快速构建 UI,适用于 MVP 或快速验证产品想法的场景。
- 组件库开发:通过 Tailwind 定义可复用的 UI 组件,在团队内部形成统一的设计系统和风格。
- 响应式设计:Tailwind 的响应式工具类能够非常方便地适配不同屏幕尺寸,适用于移动优先或多端适配项目。