什麼是元件化?
簡單來說就是將重複的東西包成元件反覆使用,在 Day01 - 什麼是 Tailwind CSS? 我們有提到 Tailwind CSS 是一套以 utility-first 為基礎的 CSS 框架,由於 class 寫在 HTML 標籤上看起來相當冗長,適當的元件化能解決這個痛點。
在 Day04 - 如何使用 Tailwind CSS? 有說明環境設定,這裡就不再贅述,以 SCSS 為例。
藉由 @layer
指令告訴 Tailwind 自定義樣式屬於哪一個階層,總共有三個階層:
自定義 @layer
也可以使用偽類修飾符,例如 hover:
、 focus:
或響應式修飾符,例如 md:
、 lg:
。
藉由 @apply
指令提取 class 名稱並以元件化做為使用,以按鈕為例。
<button type="button" class="rounded-lg bg-blue-500 py-2 px-4 font-bold text-white duration-300 hover:bg-blue-700">按鈕</button>
假使多個網頁中有相同的按鈕,每次都要重複寫這些 class,不僅 HTML 看起來雜亂,也會降低開發效率。
使用元件化,HTML 相對簡潔乾淨。
<button type="button" class="btn-primary">按鈕</button>
由於我們要組成元件,所以 @layer
選 components 這層,@apply
提取要使用的 class。
最後將這些 class 套用 .btn-primary
class 名稱上。
可以看到編譯後 .btn-praimry
裡面包含所有 Tailwind 產生的 CSS 樣式。
我們用了 @apply
的確 HTML 模板看起來更乾淨,@apply
元件化與 Bootstrap 寫好的元件是相同道理,但全部使用 @apply
元件化反而變相去編寫 CSS 進而拋棄 Tailwind 所提供的優勢。
特別注意:將 @apply
用於非常小、重複性高的東西,例如按鈕或是表單控制元件。
@layer
決定自定義樣式屬於哪一個階層。@apply
提取 class 做為使用。