共计 3264 个字符,预计需要花费 9 分钟才能阅读完成。
1. 前言
这个系列的基础篇已经完结。
- 听说你还不会 Tailwind CSS(基础·上篇)
- 听说你还不会 Tailwind CSS(基础·中篇)
- 听说你还不会 Tailwind CSS(基础·下篇)
现在来更新进阶部分:
- 上篇:如何复用样式
- 下篇:Tailwind 的配置项
这是上篇,主要解决样式复用问题。
2. 什么是可以复用的?
在开始之前,首先要明确一个问题:什么可以复用?
2.1 .container
在网页开发中,.container
是一个出现频率极高的容器类,它用来做什么呢?给网页框定一个容器范围,例如:网页的展示区域宽度范围为 1280px – 1920px:
“`html
“`
“`
“` 等价于:“`html
“` * **.center** “`html
cool color
“` 文本内容:“`html
star!
“` 甚至是 `theme()` 函数:“`html
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Voluptate doloribus aliquam tempore ducimus iure at cupiditate harum dicta voluptas voluptatum, quidem quasi sunt. Quo quia molestias iure quod ducimus culpa.
“`
或者是使用 var()
定义的变量:
css /* global.css */ :root {--my-color: #ff4200;}
“`tsx
Lorem ipsum dolor sit amet consectetur adipisicing elit. Consectetur repellendus, animi, pariatur expedita omnis nihil assumenda cum ratione ipsam, eveniet sit tempora placeat voluptatum voluptas ea odio quisquam nisi! Repellendus!
“`
5.2 @layer
+ theme()
在自定义指令 @layer
中已经掌握了如何创建自己的自定义组件、工具样式。再结合 theme()
,可以更加方便地编写自己的样式代码。
例如有一个 card 样式:
“`html
my card
“`
使用 @layer
+ @apply
:
css @layer components {.card { @apply size-48 rounded-md bg-sky-300;} }
使用 @layer
+ theme()
:
css @layer components {.card { width: theme(spacing.48); height: theme(spacing.48); padding: theme(spacing.5); border-radius: theme('borderRadius.md'); background-color: theme('colors.sky.300'); } }
后者的写法和写原生就很像了,只需要掌握 Tailwind 的内置系统规则即可。之前提到 spacing 是一个刻度系统,同样还有颜色 colors、边框弧度 borderRadius 等等。
最后只需要愉快地写下这样一行代码就能搞定卡片样式:
“`html
my card
“`
6. 总结
以上就是如何实现样式复用的全部内容,总的来说就是两个方案:
@layer
+@apply
@layer
+theme()
不过仍然有一些需要注意的地方,我们最好不要滥用这些方法,虽然可以方便书写,但是过多的封装会造成打包体积的增大,可以直接写 Tailwind 的地方就用预设值直接写,除非是在文中提到的那种十分常见的样式才有必要封装起来。
下一篇将介绍 Tailwind CSS 的配置项,从而解决最后一波问题,例如:我想扩展更多的颜色变量、或者是字体大小?或者是重新定义默认值。
原文地址: 听说你还不会 Tailwind CSS(进阶·上篇)