[Medium] 🎨 多主題切換實作
📋 面試情境題
Q: 當一個頁面要做 2 種不同風格(例如亮色/暗色主題),怎麼安排 CSS?
這是一個考察 CSS 架構設計和實務經驗的問題,涉及:
- CSS 架構設計
- 主題切換策略
- 現代化工具應用(Tailwind CSS、CSS Variables)
- 效能與維護性考量
解決方案總覽
| 方案 | 適用場景 | 優點 | 缺點 | 推薦度 |
|---|---|---|---|---|
| CSS Variables | 現代瀏覽器專案 | 動態切換、效能好 | IE 不支援 | 5/5 強烈推薦 |
| Quasar + Pinia + SCSS | Vue 3 + Quasar 專案 | 完整生態、狀態管理、易維護 | 需 Quasar Framework | 5/5 強烈推薦 |
| Tailwind CSS | 快速開發、設計系統 | 開發快速、一致性高 | 學習曲線、HTML 冗長 | 5/5 強烈推薦 |
| CSS Class 切換 | 需相容舊瀏覽器 | 相容性好 | CSS 體積較大 | 4/5 推薦 |
| CSS Modules | React/Vue 元件化專案 | 作用域隔離 | 需打包工具 | 4/5 推薦 |
| Styled Components | React 專案 | CSS-in-JS、動態樣式 | Runtime 開銷 | 4/5 推薦 |
| SASS/LESS 變數 | 需編譯時決定主題 | 功能強大 | 無法動態切換 | 3/5 可考慮 |
| 獨立 CSS 檔案 | 主題差異大、完全獨立 | 清晰分離 | 載入開銷、重複程式碼 | 2/5 不推薦 |
方案 1:CSS Variables
核心概念
使用 CSS 自訂屬性(CSS Custom Properties),透過切換根元素的 class 來改變變數值。