「我真的找不到任何話語能說服你,在HTML中到處撒滿幾十個表示性類別實際上是個好主意。」
這是Adam Wathan的話,Tailwind CSS的創始人,在Rails World 2023演講時這麼說。他是對的——當你第一次看到Tailwind程式碼時,它看起來絕對可怕。但這裡有個轉折:一旦開發者真正嘗試它,他們的反應完全不同。
令人震驚的第一印象
讓我們對新手來說Tailwind看起來是什麼樣子誠實一點:
傳統CSS方法:
<div class="testimonial-card">
<img class="avatar" src="profile.jpg" alt="Profile">
<h3 class="name">Eric Lane</h3>
<p class="title">Project Manager</p>
</div>
Tailwind方法:
<div class="bg-white rounded-2xl shadow-lg overflow-hidden p-1 pb-0">
<img class="w-20 h-20 rounded-full outline-2 outline-white -mt-10"
src="profile.jpg" alt="Profile">
<h3 class="font-semibold">Eric Lane</h3>
<p class="text-sm text-gray-600">Project Manager</p>
</div>
你的第一反應?**「這太瘋狂了!」**而Wathan完全同意。但這是他在建造Tailwind六年後發現的:「大多數人當他們真正嘗試時,很快就開始覺得『我到底怎麼會認為寫[傳統CSS]不知怎的是更好的主意?』」
「啊哈!」時刻:現場編碼揭示魔法
Wathan沒有試圖爭論為什麼Tailwind是好的,而是做了一件聰明的事——他從頭開始現場編寫整個元件。看他即時建構一個複雜的個人資料卡揭示了一些非凡的東西:
會讓你大吃一驚的速度
- 在HTML和CSS檔案之間沒有上下文切換
- 當你輸入類別時即時視覺回饋
- 沒有命名疲勞——告別「我應該叫這個類別什麼?」
- 一切都在一個地方——樣式就在你需要的地方
超越傳統框架的靈活性
不像Bootstrap或Foundation把你鎖定在它們的設計系統中,Tailwind給你構建任何東西的積木:
<!-- 零自訂CSS的複雜懸停效果 -->
<div class="group hover:scale-110 transition duration-200">
<img class="group-hover:scale-110 transition duration-200">
</div>
響應式佈局革命
Wathan展示了一些讓傳統CSS開發者喜極而泣的東西——真正有意義的響應式設計:

<!-- 行動優先響應式網格 -->
<div class="grid gap-4 md:grid-cols-2 lg:grid-cols-3">
<div class="md:col-span-2 aspect-video md:aspect-auto">主圖</div>
<div class="aspect-square">方形項目</div>
<div class="md:col-start-1 md:row-start-3">定位項目</div>
<div class="md:col-span-1 md:row-span-2">高項目</div>
</div>
**結果?**一個Pinterest風格的馬賽克佈局,用傳統CSS需要幾十行程式碼,完全用utility類別建構。沒有媒體查詢,沒有複雜的CSS——只有可讀、可維護的HTML。
深色模式魔法(不需要JavaScript)
當其他框架在深色模式實現上掙扎時,Tailwind讓它變得微不足道:
<div class="bg-white dark:bg-gray-900 text-gray-900 dark:text-white">
<h1 class="text-indigo-600 dark:bg-gradient-to-r dark:from-indigo-400 dark:to-sky-400
dark:bg-clip-text dark:text-transparent dark:text-3xl">
深色模式的漸層文字!
</h1>
</div>

想深入了解深色模式的可能性?查看完整的深色模式文件以獲取進階技術和客製化選項。
秘密武器:資料屬性和狀態管理
這是Tailwind真正聰明的地方。想要一個顯示旋轉器的載入按鈕?大多數框架需要JavaScript來切換類別。Tailwind讓你宣告式地做:
<button class="group" data-loading>
<span class="group-data-[loading]:text-transparent">
立即付款
</span>
<span class="hidden group-data-[loading]:flex absolute inset-0 items-center justify-center">
<svg class="animate-spin"><!-- 旋轉器 --></svg>
</span>
</button>
一個資料屬性更改控制整個按鈕狀態。不需要JavaScript類別操作!
重複迷思,徹底破除
批評者說:「但是所有那些重複的HTML呢?」
Wathan的回應:「管理重複的HTML字面上就是模板語言被設計來解決的整個問題域!」
<!-- Rails partial - 寫一次,到處使用 -->
<% users.each do |user| %>
<%= render 'user_card', user: user %>
<% end %>

對於簡單的元素如樣式化連結,Tailwind提供@apply來將utilities提取到自訂類別中:
.link-primary {
@apply text-indigo-500 hover:text-indigo-900 focus:underline font-medium;
}
但Wathan警告:**只對簡單的、單一元素元件使用這個。**複雜的多元素元件最好用partials處理。
動態主題:終極靈活性
這是會讓你下巴掉下來的東西。想讓使用者自訂你應用程式的主題顏色?傳統CSS需要生成幾十個樣式表。Tailwind用CSS變數處理:
<!-- 通過CSS變數設置動態顏色 -->
<div style="--btn-bg: orange; --btn-hover: #ff8800; --btn-text: white;">
<button class="bg-[var(--btn-bg)] hover:bg-[var(--btn-hover)] text-[var(--btn-text)]">
動態主題按鈕
</button>
</div>

**力量?**你的使用者可以通過你的管理介面自訂顏色,那些更改會立即應用到複雜的懸停狀態、焦點環和任何其他互動元素——不需要CSS編譯。
維護現實檢查
Wathan投下這個真相炸彈:「維護CSS很難。有課程、書籍和有響亮名稱的架構關於不同CSS方法論是有原因的。從來沒有人討論過如何撰寫可維護的HTML。」
數字支持這一點:
- 當一切都是utilities時零CSS特異性戰爭
- 更改一個元件時沒有神秘的副作用
- 幾個月後返回程式碼時即時理解
- 有信心地刪除——移除HTML,自動移除樣式
為什麼傳統CSS開發者正在轉換
從已經做出轉換的開發者那裡得到的證詞是非凡的:
「我懷疑了好幾個月。這些類別看起來醜陋又錯誤。但在用Tailwind建構一個專案後,我無法回頭了。開發速度和可維護性簡直無可比擬。」 - 資深前端開發者
「轉換到Tailwind後,我們把CSS bundle大小減少了60%,開發時間減少了40%。學習曲線是值得的。」 - 技術主管

值得回報的學習曲線
是的,Tailwind有學習曲線。你需要記住utility類別並理解間距比例。但這是區別:你學一次,它到處適用。
傳統CSS需要你:
- 為每個專案學習新的類別名稱
- 理解複雜的繼承鏈
- 除錯特異性問題
- 維護不斷增長的樣式表
Tailwind需要你:
- 學習utility類別(一次)
- 一致地應用它們(到處)
- 就這樣。
現實世界的性能優勢
除了開發者體驗,Tailwind提供可衡量的性能收益:
- 通過未使用樣式清除的更小CSS bundles
- 由於utility樣式很少改變的更好緩存
- 通過優化CSS交付的更快載入時間
- 來自更簡單樣式表的減少運行時成本
結論:它比看起來更有效
Adam Wathan的結論對數千名開發者來說是真實的:「它看起來很糟,但它運作得相當好。」
最初看起來像退步的框架原來是一個飛躍:
更快開發沒有上下文切換 更可維護的程式碼沒有CSS考古學 更好性能通過優化樣式表 無限靈活性沒有框架限制 團隊一致性通過共享的utility詞彙
準備好嘗試「糟糕」的方法了嗎?
如果你還在猶豫,Wathan有一個建議:**就試試。**建構一個小元件。體驗工作流程。感受速度。
大多數給Tailwind誠實嘗試的開發者發現了Wathan多年前學到的東西:有時候乍看之下看起來錯誤的方法原來恰恰是正確的。
問題不是Tailwind在你的HTML中看起來是否好——而是它是否讓你更有生產力,你的程式碼更可維護,你使用者的體驗更好。在所有這些方面,它絕對做到了。
觀看完整演講:Tailwind CSS: It looks awful, and it works - Rails World 2023
開始使用:Tailwind CSS文件
社群:加入Tailwind CSS Discord的討論