theme 的實作技巧
🌑 dark mode
這段 CSS:
:root {
color-scheme: light;
}
.my-app-dark {
color-scheme: dark;
}
是在設定 瀏覽器的預設 UI 色彩傾向(scrollbar、表單元件等),也可能影響某些使用 currentColor 的元件表現,但它本身不會改變你的網站主題或 PrimeVue 的樣式,除非你搭配 CSS 變數和其他樣式邏輯來一起使用。
:root {
color-scheme: light;
}
- 這是預設的 color-scheme。
- 會告訴瀏覽器「你應該用淺色(light)風格渲染像是:
<input>、<select>等原生元件- scrollbars
- 系統介面元素」
.my-app-dark { color-scheme: dark; }
- 當某個元素(例如 )有這個 class 時,瀏覽器會用 dark 模式風格渲染原生元素。
🧪 範例應用
你可能會搭配主題切換來使用這段 CSS:
<!-- dark 模式 -->
<body class="my-app-dark">...</body>
.my-app-dark {
color-scheme: dark;
--surface-color: #1e1e1e;
--text-color: #ffffff;
/** 覆蓋更多自訂變數 */
}
這樣就能搭配 color-scheme 改變瀏覽器渲染方式,同時透過自訂變數控制你的主題外觀。
🎯 什麼是 :root & var(--customer-color) ?
:root
:root 是一個特殊的 CSS 選擇器,它選擇的是 HTML 文件的根元素,也就是 <html>。
它的特色在於:設定在 :root 中的 CSS 變數會有全域作用域,可以在整個網站的 CSS 中使用。
var()
var(--xxx) 是 CSS 變數的語法,你可以把 CSS 變數當成是「CSS 版的變數或常數」。
🔧 範例:一起看
:root {
--primary-color: #4dc9b0;
--text-color: #ffffff;
}
然後在你的其他 CSS 中可以這樣使用它們:
.button {
background-color: var(--primary-color);
color: var(--text-color);
}
這樣做的好處:
- 集中管理樣式:你只要改 :root 的值,整站顏色就變了。
- 方便做主題切換:只要加個 class 就能切換整個網站的顏色(下一段會展示)。
🌗 搭配 dark mode 使用
:root {
--background-color: #ffffff;
--text-color: #000000;
}
body.dark {
--background-color: #121212;
--text-color: #eeeeee;
}
body {
background-color: var(--background-color);
color: var(--text-color);
}
只要在 <body> 上加 .dark class,就會變成深色模式!
✅ 總結
| 概念 | 說明 |
|---|---|
| :root | 全域 CSS 變數的定義區域 |
| --xxx | CSS 變數命名方式 |
| var(--xxx) | 使用該變數的語法 |
這讓你的網站更模組化、易維護、超方便切換主題風格 🚀