PrimeVue Tailwind Template
課程目標
- 瞭解如何使用 PrimeVue 的 Unstyled 模式與 Tailwind CSS 結合,建立自訂的 UI 元件樣式。
- 學習如何使用 primevue-tailwind-preset-template 模板,快速開始自訂樣式的開發。
- 掌握如何設定 Tailwind CSS 的語意化色彩與暗黑模式支援。(tailwind.primevue.org)
學習內容
- PrimeVue Unstyled 模式與 Tailwind CSS 的整合方式。
- 使用
primevue-tailwind-preset-template建立自訂樣式的流程。 - 設定 Tailwind CSS 的語意化色彩與暗黑模式。
- 實作自訂的 InputText 元件樣式。(GitHub)
核心概念解釋
PrimeVue Unstyled 模式
PrimeVue 提供 Unstyled 模式,允許開發者自訂元件的樣式,避免預設樣式的限制。這種模式特別適合與 Tailwind CSS 結合,實現高度客製化的 UI。(primevue.org)
Tailwind CSS 的語意化色彩
透過在 tailwind.config.js 中設定語意化色彩(如 primary、surface 等),可以使用 CSS 變數來統一管理色彩主題,方便日後的維護與調整。(primevue.org)
暗黑模式支援
Tailwind CSS 支援暗黑模式,透過設定 darkMode 為 'class',並在 HTML 元素上添加對應的 class(如 dark),即可切換暗黑模式。
程式碼範例及詳細註釋
1. 建立自訂的 InputText 元件樣式
在 src/mypreset/inputtext/index.js 中定義 InputText 元件的樣式:(GitHub)
// src/mypreset/inputtext/index.js
export default {
root: 'border border-surface-300 p-2 rounded-md focus:outline-none focus:ring-2 focus:ring-primary-500',
};這段程式碼定義了 InputText 元件的根元素樣式,包含邊框、內距、圓角,以及聚焦時的外框效果。
2. 組合所有元件樣式
在 src/mypreset/index.js 中匯入並導出所有元件的樣式:
// src/mypreset/index.js
import global from './global';
import inputtext from './inputtext';
export default {
global,
inputtext,
};這樣可以在 PrimeVue 的設定中一次性載入所有自訂的元件樣式。
3. 設定 Tailwind CSS 的語意化色彩
在 tailwind.config.js 中擴充主題的色彩設定:(primevue.org)
// tailwind.config.js
export default {
theme: {
extend: {
colors: {
primary: {
50: 'rgb(var(--primary-50))',
100: 'rgb(var(--primary-100))',
// ...
900: 'rgb(var(--primary-900))',
},
surface: {
0: 'rgb(var(--surface-0))',
50: 'rgb(var(--surface-50))',
// ...
900: 'rgb(var(--surface-900))',
},
},
},
},
};這樣可以使用如 bg-primary-100、text-surface-900 等語意化的 Tailwind CSS 類別。(GitHub)
4. 啟用暗黑模式
在 tailwind.config.js 中設定暗黑模式:(Dribbble)
// tailwind.config.js
export default {
darkMode: 'class',
// ...
};然後在 HTML 的根元素(如 <html> 或 <body>)上添加 class="dark",即可啟用暗黑模式。
實踐練習題
練習 1:建立自訂的 Button 元件樣式
請在 src/mypreset/button/index.js 中定義一個自訂的 Button 元件樣式,要求如下:
- 背景色為
primary-500。 - 文字顏色為白色。
- 內距為
px-4 py-2。 - 圓角為
rounded。 - 滑鼠懸停時,背景色變為
primary-600。
練習 2:設定自訂的暗黑模式樣式
請在 src/mypreset/global.js 中添加以下暗黑模式的全域樣式:
- 背景色為
surface-900。 - 文字顏色為
surface-100。
提示:可以使用 CSS 的 @media (prefers-color-scheme: dark) 媒體查詢來實現。
補充資源
透過本課程,您應該能夠掌握如何使用 PrimeVue 的 Unstyled 模式與 Tailwind CSS 結合,建立自訂的 UI 元件樣式,並設定語意化色彩與暗黑模式支援。
