tailwindcss - 入门体验
图片来源 - 黑板Black
前言
最近做 github-resume 的时候,体验了一段时间的 tailwind css , 记录一些心得。
简介
tailwindcss 是一个通过组合多个有语义的 class 来构建ui的css库。
他默认会提供一套设计原则(色系、布局大小、对齐等),然后再这个原则基础上,将每一个css封装成一个一个的有语义的class(所谓的原子粒度),然后通过在组合这些class来构建ui。
1 |
|
安装
1 |
|
- 更多可以参考官网,基本覆盖了各个技术栈开发工具的指南
兼容性
- 从官网的描述中得知,完全按最新浏览器css标准实现,可以在 caniuse,查询浏览器是否支持某个特性
- 同时,因为是基于postcss来实现,所以可以通过各个插件来实现一些现在浏览器还不支持的特性,以及一些预处理器可以做到的,tailwind同样可以做到(postcss的能力)
特点
- 类似css in js 和行内样式一样的,不用单独维护样式文件
- 但是在支持上述的优点的同时,提供响应式和约束设计,并且支持状态书写(悬浮、聚焦等)、黑暗模式等
- 因为基于postcss实现,所以预处理器相关的特性,也基本都可以通过postcss插件来实现
使用
安装完成后,在主css中引入下列代码
1 |
|
建议搭配以下插件(vscode),食用更愉快:
- Tailwind CSS IntelliSense:提供lint、语法高亮、命令补全等
- Tailwind Docs:在vs指令中,搜索对应class的使用,然后会自动跳转到文档对应位置查看
基本使用
- 基本就是将css的属性换成了一个单词,然后写在class里,文档类似词典直接搜对应属性即可搜到
伪类、伪元素
以hover举例,其他差不多,详见官网
1 |
|
1 |
|
公用样式
公用样式的抽离,有以下几种形式:
- 抽离为js的变量(tsx和vue)来使用
- 使用 @apply 指令,抽离 tailwindcss的多个class到一个自定义class里
- 使用 @layer 指令,自定义多个dom的css在一个class里,理解为新建一个ui组件(很多基于tailwindcss的组件库就是这样做的)
常见配置
1 |
|
基本原理
- tailwindcss其实就是postcss的一个插件,然后结合一些其他postcss的插件,来用js解析我们写的 class(tailwind定义的工具class),然后去动态的生成对应的css;而框架本身的设计原则,其实就是默认定义好色系值、间距值等常量,在来决定生成css的时候具体像素以及颜色值该是什么
- 上述只是核心的工作流程,其他还有很多细节,例如本身的插件机制、以及怎么去做css剪裁(css的treeshaking)等。。(计划学习一下postcss在详细看看)
总结
- tailwindcss作者思路还是给我眼前一亮的,一个css库除过测试基本没多少css,感觉把postcss玩出花了(nb)
- 技术社区对很多场景的解决方案一直是层出不穷的,个人觉得这些方案,没有绝对的好坏之分,只有是否适合自己当下的需求,再好的方案在不会使用或者使用不当的人,也都会成为”不好的“方案,根据自己需要选择即可
- 另外,其实作为一个技术人,很多方案自己没有想到可以这样做,但是别人想到了并且开源提供给大家使用,我觉得即使不用,去学习一下别人的思路也是可以的,就当技术交流,而不是上来口吐芬芳(吐槽一些技术圈子的陋习)
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!