Tailwind CSS 是一套開放原始碼、Utility-First(工具優先)的 CSS 框架。它不會像 Bootstrap 或 Material UI 預先提供完整的按鈕、導覽列與卡片元件,而是提供 flex、p-4、text-lg、bg-blue-500 等小型工具類別,讓開發者直接在 HTML 或元件模板中組合版面。其主要價值是加快切版速度、統一設計規則、降低樣式衝突,特別適合大型專案與 Angular、React、Vue 等元件化架構;但 HTML 類別可能變長,也需要團隊建立一致的使用規範。
Tailwind 是什麼
Tailwind CSS 採用 Utility-First 設計方式,把常見 CSS 屬性轉換成可重複使用的工具類別。例如 display: flex 對應 flex,padding: 1rem 可使用 p-4,文字置中則使用 text-center。開發者不必先建立 .product-card 或 .primary-button,就能直接在標記中完成大部分介面設計。
傳統 CSS 通常先替元素命名,再到 CSS 檔案編寫樣式。當專案持續擴大,容易出現命名困難、選擇器權重衝突、重複宣告及未使用樣式等問題。Tailwind CSS 則透過受控的工具類別與設計尺度,減少任意數值及重複規則。
Tailwind CSS 並不是禁止開發者撰寫 CSS。遇到第三方元件覆寫、複雜動畫、特殊偽元素或無法用既有工具表達的設計時,仍可加入自訂 CSS。正確的 Tailwind 用法,是優先利用框架提供的工具,再依實際需求補充樣式,而不是強迫所有設計都塞進單一 HTML 屬性。
Tailwind CSS 的運作方式
Tailwind 會分析專案中的 HTML、TypeScript、JavaScript 或元件模板,找出實際使用的類別,再產生對應的 CSS。現代版本整合了按需產生樣式的機制,因此正式建置結果通常不會包含整套工具庫。
例如,一張卡片可以使用 rounded-xl bg-white p-6 shadow-md,分別代表圓角、白色背景、內距與陰影。響應式版面可寫成 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3,代表預設單欄、中型畫面兩欄、大型畫面三欄。
狀態樣式也可以直接加入類別,例如 hover:bg-blue-700 處理滑鼠停留效果,focus:ring-2 處理鍵盤焦點,dark:bg-slate-900 則可建立深色模式。這種組合方式讓開發者不必在 HTML 與 CSS 檔案之間反覆切換。
Tailwind 版本與安裝差異
查閱 Tailwind CSS 中文資料時,必須先確認內容對應的 Tailwind 版本。Tailwind CSS 4 與舊版 3 的安裝、設定及 CSS 匯入方式已有明顯差異。
Tailwind CSS 3 常見的流程是執行 npx tailwindcss init 產生 tailwind.config.js,在 content 中設定掃描路徑,並於 CSS 寫入 @tailwind base、@tailwind components 與 @tailwind utilities。Tailwind CSS 4 則簡化設定,通常使用 @import "tailwindcss"; 匯入,PostCSS 與 CLI 功能也拆分成個別套件。
版本差異比較表
| 比較項目 | Tailwind CSS 3 | Tailwind CSS 4 |
|---|---|---|
| 初始化方式 | 常使用 npx tailwindcss init |
多數情況不必產生設定檔 |
| CSS 匯入 | 三個 @tailwind 指令 |
@import "tailwindcss"; |
| PostCSS 套件 | tailwindcss 搭配 PostCSS |
使用 @tailwindcss/postcss |
| CLI | 由舊版套件執行 | 使用 @tailwindcss/cli |
| 內容偵測 | 在設定檔配置 content |
提供自動內容偵測機制 |
| 瀏覽器要求 | 適用範圍相對廣 | 採用較新的 CSS 能力,需檢查目標瀏覽器 |
| 適合情境 | 維護既有專案 | 新專案優先評估 |
若既有專案使用第三方外掛或自訂設定,升級前應閱讀官方升級指南,而不是直接套用新版指令。搜尋到的 Tailwind CSS 教學若要求一定要執行 init -p,通常是在介紹 Tailwind CSS 3,不代表目前所有版本都必須採用相同流程。
Tailwind CSS 安裝前的準備
大多數 Tailwind CSS 專案透過 Node.js 與套件管理工具建置。開始前應先安裝專案支援的 Node.js 版本,並確認終端機可以執行 node -v 與 npm -v。正式專案建議使用 Node.js 長期支援版本,實際版本則以 Angular 與其他建置工具的相容性要求為準。
所謂 Tailwind CSS 下載,通常不是前往網站取得單一 CSS 檔,而是透過 npm 安裝套件。這樣才能使用正式建置、內容偵測、主題設定及最佳化功能。瀏覽器 Play CDN 比較適合快速試驗,不應直接視為完整的正式環境安裝方案。
Tailwind CSS 從零開始:Angular 設定流程
Angular 專案的工具鏈會隨版本調整,因此應先查看 Angular 與 Tailwind 官方文件。以下採用 Tailwind CSS 4 的 PostCSS 整合概念,適合用來理解目前的基本設定方式。
建立 Angular 專案
先確認已具備 Angular CLI 所需環境,再執行 ng new 專案名稱 建立專案,接著使用 cd 專案名稱 進入資料夾。若已經有 Angular 專案,可直接從安裝相依套件開始。
建立專案時可以依需求選擇路由、樣式格式及其他 Angular 選項。即使選擇 SCSS,也應確認 Tailwind 的主要匯入檔案確實列入 Angular 全域樣式設定。
安裝 Tailwind 與 PostCSS
在專案根目錄執行 npm install tailwindcss @tailwindcss/postcss postcss。這是 Tailwind CSS 安裝的核心步驟,套件版本會記錄在 package.json 與鎖定檔中,方便團隊及部署環境重現安裝結果。
不要在沒有評估的情況下加入 --force,因為強制略過相依性檢查可能隱藏真正的版本衝突。如果 npm 顯示錯誤,應先核對 Angular、Node.js、PostCSS 與 Tailwind 版本是否相容。
設定 PostCSS 外掛
在專案根目錄建立 .postcssrc.json,並將 @tailwindcss/postcss 設為外掛。若專案已有 postcss.config.js、.postcssrc.json 或建置平台提供的 PostCSS 設定,應整合既有內容,避免建立多個互相競爭的設定來源。
設定完成後,Angular 的建置流程便能透過 PostCSS 處理 Tailwind。實際檔名及設定格式仍應以目前 Angular 官方整合文件為準,因為不同 Angular 版本的建置器可能存在差異。
匯入 Tailwind CSS
在 Angular 的全域樣式檔案,例如 src/styles.css,加入 @import "tailwindcss";。若使用 styles.scss,也要確認該檔案已在專案設定中載入。
Tailwind CSS 4 不應直接照抄舊教學中的三段 @tailwind 指令。反過來說,維護 Tailwind CSS 3 專案時,也不能只替換匯入語法而忽略設定檔與外掛相容性。
啟動 Angular 開發伺服器
執行 ng serve,再開啟 Angular 提供的本機網址。可以在元件模板加入 text-3xl font-bold text-blue-600 測試;若畫面出現較大的粗體藍字,代表基本整合成功。
若類別沒有生效,應依序檢查套件是否成功安裝、PostCSS 設定位置是否正確、全域 CSS 是否匯入,以及開發伺服器是否在修改設定後重新啟動。
Tailwind CSS 教學:常用類別觀念
Tailwind 的間距以固定尺度呈現,例如 m-4 是外距、p-4 是內距、px-6 是左右內距、gap-4 則是 Flexbox 或 Grid 子項目間距。統一尺度能降低專案出現大量相近但不一致的數值。
版面可使用 flex、items-center、justify-between、grid 與 grid-cols-3。尺寸則常見 w-full、max-w-7xl、min-h-screen。字體樣式可使用 text-sm、font-semibold、leading-relaxed 與 text-slate-700。
響應式設計採用行動裝置優先思維。text-sm md:text-base lg:text-lg 表示基礎尺寸先套用小字,中型與大型畫面再逐步放大。前綴通常代表最小寬度條件,而不是只針對某一個固定裝置。
當某組樣式反覆出現時,優先考慮抽成 Angular 元件,而不是急著建立大量語意類別。按鈕、卡片與表單欄位如果具有固定結構,封裝成元件可同時重用標記、互動行為、無障礙屬性與 Tailwind 類別。
Tailwind CSS 與 Bootstrap 的差異
Bootstrap 提供具有預設外觀及互動模式的元件,適合快速建立常見後台或標準化介面。Tailwind CSS 提供較低階的工具,外觀不會被框架元件強烈限制,因此更容易依照品牌設計稿進行客製化。
框架選擇分析表
| 評估面向 | Tailwind CSS | Bootstrap |
|---|---|---|
| 核心理念 | Utility-First 工具組合 | 元件與工具類別並用 |
| 預製元件 | 核心不提供完整元件 | 提供按鈕、表格、導覽列等 |
| 客製化彈性 | 高,適合建立專屬設計系統 | 可客製化,但常需覆寫既有外觀 |
| HTML 類別長度 | 通常較長 | 使用元件類別時較短 |
| 學習重點 | 工具命名、狀態及響應式前綴 | 元件結構與框架規則 |
| 適合專案 | 客製品牌、元件化與大型前端專案 | 快速原型、標準後台與既定介面 |
兩者沒有絕對優劣。若專案需要現成元件及一致的預設外觀,Bootstrap 可能更直接;若設計稿高度客製化,Tailwind 通常能減少覆寫框架樣式的工作。
Tailwind CSS 的主要優點
Tailwind 能減少替每一個區塊發明類別名稱的負擔,也能避免過度依賴深層選擇器。樣式與元件模板放在相近位置,刪除元件時通常也會一併移除相關工具類別,降低遺留無用 CSS 的機率。
工具類別使用統一的間距、色彩、斷點與字體尺度,有助於團隊維持視覺一致性。開發者看到類別名稱便能大致判斷效果,不必持續追查跨檔案選擇器與繼承關係。
Tailwind 特別適合 Angular 元件化專案。開發者可以把重複的介面結構封裝成元件,再透過輸入參數控制狀態與變體。這類做法比複製整段類別更容易維護,也符合大型專案建立設計系統的需求。
Tailwind CSS 缺點與限制
最明顯的 Tailwind CSS 缺點,是 HTML 或 Angular 模板中可能出現很長的 class 字串。若團隊沒有元件拆分與排序規範,閱讀及程式碼審查會變得困難。這不是單靠框架就能解決的問題,仍需要良好的元件設計。
開發者也必須學習 Tailwind 的命名方式。熟悉 CSS 並不代表立刻知道每個工具類別,剛開始可能頻繁查閱文件。部分任意值雖然方便,但若大量使用 w-[347px] 等寫法,會削弱設計尺度原本帶來的一致性。
動態產生類別時也要謹慎。像是把 bg- 與變數拼接成完整名稱,建置工具不一定能從原始碼辨識所有可能結果。較安全的方式是建立完整類別對照,例如明確把不同狀態映射到 bg-red-500 或 bg-green-500。
此外,Tailwind 不是現成 UI 元件庫。無障礙行為、鍵盤操作、對話框焦點管理與複雜互動仍需由 Angular、原生 JavaScript 或其他相容工具處理。若搭配 Alpine.js,通常適用於較輕量的互動頁面;Angular 專案則應優先使用 Angular 本身的狀態與元件機制,避免重複管理 DOM。
哪些專案適合使用 Tailwind CSS
Tailwind 適合檔案多、設計規則複雜、需要響應式介面,或由多人長期維護的專案。Angular、React 與 Vue 等元件化架構也很適合,因為重複的工具類別可以隨元件一起封裝。
若是生命週期很短的一次性頁面、樣式極少的靜態網站,或團隊已經有穩定且完整的 CSS 架構,導入 Tailwind 未必能立即帶來足夠效益。選擇框架時應考量團隊經驗、瀏覽器支援、既有技術債及設計系統,而不是只依照流行程度決定。
Tailwind 中文學習與資料查證
尋找 Tailwind 中文 或 Tailwind CSS 中文內容時,建議先確認文章日期與版本。許多中文教學仍以 Tailwind CSS 3 為基礎,內容本身未必錯誤,但安裝指令不一定適用於新專案。
技術規則應以 Tailwind CSS 官方文件、Angular 官方整合說明、npm 套件頁面及官方升級指南為主要依據。中文文章適合協助理解觀念,但版本、套件名稱、瀏覽器支援與建置設定應回到第一手文件核對。
結論
Tailwind CSS 的核心並不是「完全不用 CSS」,而是把常用 CSS 規則轉換成可組合、可約束的工具類別。它像準備披薩配料一樣提供基礎材料,開發者可以依設計需求自由組合,但仍需遵守元件架構與設計系統,才能避免介面失去一致性。
對大型、元件化及高度客製化的專案而言,Tailwind 能提高切版速度並減少樣式衝突。對小型或短期專案而言,安裝與學習成本則可能高於收益。開始 Tailwind CSS 從零開始實作前,應先確認 Tailwind 版本,再依官方文件選擇 PostCSS、CLI 或框架整合方式。
常見問題
1. Tailwind CSS 是不是不需要學 CSS?
不是。Tailwind 將 CSS 屬性轉換成工具類別,仍需理解盒模型、Flexbox、Grid、響應式設計、選擇器及層疊規則,才能正確使用。
2. Tailwind CSS 可以免費商用嗎?
可以。Tailwind CSS 是採用 MIT 授權的開放原始碼專案,可用於個人及商業專案,但其他 Tailwind 生態系產品或元件可能有不同授權。
3. Tailwind CSS 下載一定要使用 npm 嗎?
不一定,也可使用獨立 CLI 或 Play CDN 等方式。不過 Angular 等正式專案通常透過 npm 管理版本與建置相依套件。
4. 為什麼找不到 tailwind.config.js?
Tailwind CSS 4 多數基本專案不需要執行舊版初始化流程,因此沒有設定檔可能是正常情況。若教學要求該檔案,應先確認是否針對 Tailwind CSS 3。
5. Tailwind CSS 會讓最終 CSS 檔案很大嗎?
現代 Tailwind 會依原始碼中實際使用的類別產生樣式,正式建置通常不會包含所有工具。但檔案大小仍取決於專案使用量、第三方樣式及建置設定。
6. 為什麼動態組合的 Tailwind 類別沒有生效?
建置工具需要從原始碼辨識完整類別名稱。不要只以字串片段拼接類別,應建立包含完整名稱的狀態對照。
7. Angular 可以搭配 Tailwind CSS 嗎?
可以。Tailwind 可透過 PostCSS 整合 Angular 建置流程,並直接用於元件模板與全域樣式。設定方式應配合目前的 Angular 與 Tailwind 版本。
8. Tailwind CSS 可以和 SCSS 同時使用嗎?
可以,但應避免不必要的抽象與重複樣式。Tailwind 適合處理多數介面工具,SCSS 則可保留給框架無法清楚表達的特殊需求。
9. Tailwind CSS 適合初學者嗎?
基本類別容易開始使用,但要建立可維護的正式專案,仍需具備 HTML、CSS、響應式設計及元件化觀念。建議從小型頁面還原練習開始。
10. Tailwind CSS 與 Bootstrap 應該選哪一個?
需要現成元件及預設外觀時可優先評估 Bootstrap;需要高度客製化、設計系統及元件化開發時可優先評估 Tailwind CSS。最終選擇應依專案與團隊需求決定。