# 主题系统使用指南 ## 概述 项目已成功集成完整的亮色/暗色主题系统,支持一键切换并自动保存用户偏好。 ## ✨ 主要特性 - ✅ 完整的亮色和暗色主题定义 - ✅ 自动检测系统主题偏好 - ✅ 用户偏好持久化(localStorage) - ✅ 监听系统主题变化 - ✅ 平滑的过渡动画 - ✅ 50+ CSS 变量覆盖所有UI场景 - ✅ TypeScript 类型支持 - ✅ 响应式数据绑定 ## 🚀 快速开始 ### 1. 全局初始化(已完成) 主题系统已在 `App.vue` 中全局初始化,整个应用自动支持主题切换功能。 ### 2. 主题切换按钮 在头部工具栏可以看到主题切换按钮(🌙/☀️图标),点击即可切换主题。 ### 3. 手动切换主题 ```typescript import { useTheme } from '@/utils/theme'; // 在组件中使用 const { toggle, setTheme, currentTheme, isDark } = useTheme(); // 切换主题 toggle(); // 设置为特定主题 setTheme('dark'); // 或 'light' // 获取当前主题状态 console.log(isDark()); // true 或 false console.log(currentTheme); // 'light' 或 'dark' ``` ### 4. 在样式文件中使用主题变量 ```scss .my-component { background: var(--background-color); color: var(--text-color); border: 1px solid var(--border-color); &:hover { background: var(--background-hover); border-color: var(--border-color-hover); } } ``` ## 📋 可用的 CSS 变量 ### 主题标识 - `--theme-mode`: 当前主题模式 ('light' 或 'dark') ### 主要颜色 - `--primary-color`, `--primary-hover`, `--primary-active` - `--secondary-color`, `--secondary-hover`, `--secondary-active` - `--accent-color`, `--accent-hover` ### 背景颜色 - `--background-color`: 主要背景 - `--background-secondary`, `--background-tertiary` - `--background-hover` ### 文本颜色 - `--text-color`: 主要文本 - `--text-secondary`, `--text-tertiary` - `--text-inverse`: 反转文本色 ### 边框颜色 - `--border-color`, `--border-color-hover`, `--border-color-active` ### 状态颜色 - `--success-color`, `--success-bg` - `--warning-color`, `--warning-bg` - `--error-color`, `--error-bg` - `--info-color`, `--info-bg` ### 组件颜色 - `--card-bg`, `--card-shadow` - `--sidebar-bg`, `--sidebar-hover` - `--header-bg` ### 阴影 - `--shadow-sm`, `--shadow-md`, `--shadow-lg`, `--shadow-xl` ### 圆角 - `--border-radius`, `--border-radius-sm` - `--border-radius-lg`, `--border-radius-xl` - `--border-radius-full` ### 过渡 - `--transition-base`: all 0.3s - `--transition-fast`: all 0.15s - `--transition-slow`: all 0.5s ### 字体 - `--font-family-base` ## 🎨 自定义滚动条 项目已经内置了自定义滚动条样式,支持主题切换: ### 特性 - ✅ 自动适配亮色/暗色主题 - ✅ 支持 WebKit 和 Firefox 浏览器 - ✅ 平滑的过渡动画 - ✅ 悬停效果增强 - ✅ 支持隐藏滚动条(保持滚动功能) ### 滚动条大小 - 宽度/高度:8px - 适合现代 UI 风格 - 不影响内容布局 ### 使用方式 **1. 默认滚动条(自动应用)** 所有滚动容器都会自动使用主题滚动条样式。 **2. 隐藏滚动条** 如需隐藏滚动条但保持滚动功能: ```vue
``` **3. 自定义滚动条颜色** 如需特定区域使用不同的滚动条颜色,可在组件样式中覆盖: ```scss .my-custom-scroll { &::-webkit-scrollbar-thumb { background: var(--primary-color); } scrollbar-color: var(--primary-color) var(--background-secondary); } ``` ### 浏览器兼容性 - ✅ Chrome/Edge: 完美支持 - ✅ Firefox: 完美支持 - ✅ Safari: 完美支持 - ✅ Opera: 完美支持 - ⚠️ IE: 使用原生滚动条 ## 📁 文件结构 ``` front/ ├── src/ │ ├── App.vue # 全局初始化主题系统 ⭐ │ ├── main.ts # 入口文件,引入样式 │ ├── assets/ │ │ └── css/ │ │ ├── root.scss # 主题变量定义 │ │ └── theme-usage.md # 详细使用文档 │ ├── utils/ │ │ └── theme.ts # 主题切换工具 │ ├── components/ │ │ └── ThemeToggle.vue # 主题切换组件 │ └── views/ │ └── components/ │ └── layout.vue # 已集成主题切换按钮 ├── THEME_GUIDE.md # 本文件 ``` ## 💡 使用示例 ### 示例 1: 基础组件 ```vue{{ content }}