# TailwindCSS ## 大綱 - TailwindCSS 介紹 - 適用 TailwindCSS 的情境 (搭配前端框架,例如:Vue.js或React.js) - 為什麼要使用TailwindCSS ? - TailwindCSS 相比原生 CSS (附上截圖寫法) - 使用 TailwindCSS 推薦安裝的擴充套件 ## 為什麼要使用 Tailwind CSS? 1. 提高開發效率 原子化(Utility-First)設計:Tailwind 提供大量單一職責的 class,如 p-4, text-center, bg-blue-500 等,讓開發者可以直接在 HTML 中快速排版與設計,避免來回切換 CSS 和 HTML 檔案。 即時預覽效果:搭配例如 Vite + VS Code 的 setup,可在修改 class 的同時即時看到畫面變化,開發速度更快。 2. 減少 CSS 冗餘與命名困難 傳統 CSS 或 SCSS 需為每個元件命名與寫樣式,例如 .btn-primary, .card-header 等,容易出現命名衝突、樣式重複。 Tailwind 直接在 HTML 中使用 class,不需要為樣式命名,降低維護複雜度與認知成本。 3. 更好的元件化與一致性 結合如 Vue、React 等前端框架,Tailwind 容易封裝元件,class 命名具有一致性,不容易跑版。 使用設計系統時,可搭配 @apply 或自定義 theme,實現 UI 樣式一致性與設計規範化。 4. 客製化強與主題延伸性好 tailwind.config.js 可以自定義 breakpoints、color palette、spacing 等設計系統,讓設計師與工程師協作更緊密。 支援暗黑模式、RTL 語系、多主題切換等功能。 5. 效能佳、檔案小 Tailwind 預設使用 PurgeCSS(現在稱為 Content-aware tree-shaking),只保留實際用到的 class,最終生產環境 CSS 檔案通常小於 10KB,效能好、載入快。 6. 學習曲線相對平坦 開發者只要熟悉命名規則,即可快速上手。不需要記住 CSS 規範與兼容性問題,非常適合前端新手或跨領域學習者。 ## 對比傳統 CSS / Bootstrap | 特點 | 傳統 CSS | Bootstrap | Tailwind CSS | | -------- | ------ | --------- | ------------ | | 樣式設計自由度 | 高 | 中 | 高 | | 學習成本 | 中高 | 低 | 中 | | 元件一致性 | 需自行維護 | 有內建樣式 | 可自定義 + 元件化強 | | 擴充與客製化能力 | 高 | 低中 | 非常高 | | 最終檔案大小 | 易膨脹 | 中 | 小(自動剔除未用樣式) | ## tailwind.config.js設定 以Vite建構的Vue專案搭配TailwinCSS為例: ```content``` :這是重要的設定,它指定 Tailwind 要掃描哪些檔案,從中提取 class 名稱來生成實際使用的 CSS。 ```js // tailwind.config.js module.exports = { content: [ "./index.html", // 這是 Vite 預設的入口文件 "./src/**/*.{vue,js,ts,jsx,tsx}", // 在 src 目錄下的所有 Vue、JS、TS、JSX、TSX 文件都會被包含 ], theme: { extend: { colors: { primary: "var(--color-primary)", accent: "var(--color-accent)", } }, }, plugins: [ require('daisyui'), // TailwindCSS 支援的 UI ], } ``` 功能說明: 這是 Tailwind CSS 的 Purging 機制(又稱「Tree-shaking」): 只保留實際在這些檔案中有使用到的 class,其他都會被移除,讓最終輸出的 CSS 更小、更快。 有官方文章網址嗎(? ## 使用 TailwindCSS 推薦安裝的擴充套件 Tailwind CSS IntelliSense ![image](https://hackmd.io/_uploads/BkbOcbXXee.png) MIT License ![image](https://hackmd.io/_uploads/rJ0dKWmmee.png) ## 適用情境 快速開發原型 自訂設計系統的企業專案 與 Vue、React、Next.js 等現代框架搭配 團隊協作、設計師交接時樣式統一 main.css內 ```css= @tailwind base; @tailwind components; @tailwind utilities; ``` @tailwind base; 引入 Tailwind 的「基礎樣式(Base styles)」 包含:CSS Reset、字體、元素預設樣式(如 body, h1, p 的預設行高與字型) @tailwind components; 匯入 Tailwind 的元件樣式,用來支援像是 @apply 或插件產生的樣式(例如 daisyUI) 可放自己寫的樣式元件(例如按鈕組、卡片設計) ```css .btn { @apply px-4 py-2 bg-blue-500 text-white rounded; } ``` @tailwind utilities; 引入 Tailwind 的 utility class 工具類別 像是 mt-4, text-center, bg-red-500, flex, gap-2... 這些都是在這邊定義進來 我個人使用過的TailwindCSS版本是3.4.17 "tailwindcss": "^3.4.17", =============== 為什麼 Tailwind CSS 需要它? Tailwind CSS 是建立在 PostCSS 上的,它本身就是一個 PostCSS 插件。 postcss.config.js 裡通常會包含: `tailwindcss`:把 Tailwind 的指令(如 ``@tailwind utilities;``)轉換成真正的 CSS `autoprefixer`:自動幫你的 CSS 加上瀏覽器前綴(像 ``-webkit-``),提高相容性