Joseph Chen
傳統寫法是:在 .html 裡加 class,在 .css 裡寫對應的樣式。兩個檔案來回切換,改個顏色要找半天。
Tailwind 的做法完全不同:每個 class 都直接對應一個 CSS 屬性。不需要自己命名 class,不需要另外寫 CSS 檔案,樣式就寫在元素上。
乍看之下 className 很長很醜,但用習慣之後你會發現:根本不需要離開這個檔案就能完成所有樣式修改。
Tailwind 的命名規律
Tailwind class 都有規律,一旦抓到模式就能猜出大部分:
| Class | 對應的 CSS | 說明 |
|---|---|---|
| text-xl | font-size: 1.25rem | 字體大小,還有 text-sm / text-2xl / text-5xl |
| font-black | font-weight: 900 | 字重,還有 font-bold / font-medium / font-light |
| text-gray-900 | color: #111827 | 文字顏色,數字 100-950,越大越深 |
| bg-white | background: white | 背景色,同樣支援色票系統 |
| p-6 | padding: 1.5rem | p = padding,數字是 4px × 數字 |
| px-6 | padding-left/right: 1.5rem | px = 水平 padding,py = 垂直 |
| mt-4 | margin-top: 1rem | m = margin,mt/mb/ml/mr/mx/my |
| rounded-2xl | border-radius: 1rem | 圓角,還有 rounded-lg / rounded-full |
| shadow-sm | box-shadow: ... | 陰影,還有 shadow-md / shadow-lg / shadow-xl |
| w-full | width: 100% | 寬度,還有 w-1/2 / w-48 / w-auto |
| h-screen | height: 100vh | 高度 |
| opacity-50 | opacity: 0.5 | 透明度,0-100 |
排版:flex 和 grid
我的網頁大量使用 flex 排版。以下是最常用的 flex 組合:
flex items-center gap-3水平排列、垂直置中、間距 12px — 最常用的排版
Joseph Chen
Software Engineer
flex items-center justify-between左右兩端對齊 — 常用在 Card Header 或 Navbar
grid sm:grid-cols-2 gap-4響應式網格:手機 1 欄,sm 以上 2 欄
響應式設計:前綴修飾符
Tailwind 用前綴讓你針對不同螢幕寬度套用不同樣式。規則很簡單:沒有前綴 = 手機,sm: 以上 = 套用。
| 前綴 | 觸發寬度 | 例子 |
|---|---|---|
| (無前綴) | 所有裝置 | text-sm → 所有裝置用小字 |
| sm: | ≥ 640px | sm:text-xl → 平板以上用大字 |
| md: | ≥ 768px | md:grid-cols-3 → 中螢幕 3 欄 |
| lg: | ≥ 1024px | lg:text-7xl → 大螢幕超大標題 |
我的首頁標題就用了響應式:手機 5xl,桌面 7xl:
互動狀態:hover、focus、group
hover: — 滑鼠懸停效果
group + group-hover: — 父子連動效果
在父元素加 group,子元素用 group-hover: 就能在 hover 父元素時改變子元素的樣式
實戰:拆解一張 Blog 卡片的 className
這是我的 blog/page.tsx 裡一段實際的 className,我們來逐字拆解:
這就是上面那段 className 的實際效果
淡紫色背景、細框線、圓角、內距、子元素間距 — 完全不需要寫任何 CSS 檔案。
兩個超常用的 Class
space-y-N
讓容器內所有子元素之間有垂直間距。等同於對每個子元素加 margin-top,但不用一個個加。
max-w-3xl mx-auto
限制最大寬度並水平置中。我幾乎每篇文章都用這個,讓內容不要在寬螢幕上過度延伸,保持可讀性。