所以,你聽說了 Tailwind CSS,並且想把它導入你的新專案。但那些行內樣式看起來也太亂了吧——它們看起來很像我們以前被告誡要避免的那種舊式 style="font-size: 12px; color: green; font-style: italics" 寫法。這到底是怎麼回事?我們是在倒退嗎?
在你急著轉身逃跑之前,我想我們都曾在維護大型程式碼庫時遇過這個問題:
/* 開發者 A 在 2 年前寫的 */
.card-variant-3 {
background-color: #f3f4f6;
padding: 1rem;
border-radius: 0.5rem;
}
兩年後,樣式表已經長到 5,000 行。而這個類別可能會在數百萬行的程式碼庫中任何地方被使用。
開發者 B 太害怕修改 .card-variant-3,因為他不知道它是不是被某個很冷門的行銷頁面使用……所以他們只好在檔案底部再附加一個新類別。
.card-variant-3-updated {
background-color: #f3f4f6;
padding: 1.5rem; /* <--- 只改了 padding! */
border-radius: 0.5rem;
}
問題在於:打包大小會隨著應用程式線性成長。你得把時間花在命名上(.main-content-inner、.card-body-flex),還得在 HTML 和 CSS 檔案之間來回切換。
Tailwind 透過 CSS 變數建立像 "bg-mint-500"、"text-mint-500"、"border-mint-500" 這類的「工具類別」,讓你可以直接在 HTML 中這樣使用:
<h1 className="text-mint-500"> Introduction </h1>
這種重構帶給我們兩個優勢:
CSS 打包體積更小:因為你會一再重複使用 bg-mint-500 或 p-4 這些類別,不需要不斷寫出新的 CSS 行。無論你有 10 個頁面還是 10,000 個頁面,正式環境的 CSS 大小幾乎都維持不變(通常只有傳統樣式表的一小部分)。
重構風險大幅降低:所有決定這個元素外觀的東西,都只存在於這個元件區塊內。如果你刪掉這個元件,樣式也會跟著立刻刪除。完全不會有影響到你應用程式另一邊側欄的風險。
這樣做之所以沒問題,最大的原因是你其實只需要偶爾看它。
在現代網頁開發中,我們幾乎不再撰寫原始、靜態的 HTML 頁面了。我們使用的是以元件為基礎的架構(React、Vue、Svelte、Blade、Astro 等)。
當你像這樣為一個元素區塊加上樣式時,你會立刻把它封裝成可重用的元件。例如:
<Card variant="premium">
一旦這個元件被儲存下來,那些「醜陋」的實作細節就會被乾淨、語意化的自訂標籤遮蔽起來。你的主要版面配置程式碼依然保持整潔,而那些混亂的樣式則被安全地隔離在單一檔案之中。
我們用較不美觀的標記,換來了更穩固的可維護性。我們讓 HTML 在開發時看起來雜亂一些,換取正式環境的架構能保持完全乾淨、可預測,而且彼此隔離。
我會在實際專案中進一步討論 Tailwind CSS。歡迎追蹤我,閱讀更多這類文章!
請在下方留言——你是怎麼管理 CSS 的?你覺得工具類別是一個好主意嗎??