# CSS主题系统使用指南 ## 概述 本项目采用统一的CSS主题系统,通过CSS变量实现一致的视觉效果和便捷的主题管理。所有颜色、尺寸、间距等样式值都通过预定义的CSS变量进行管理,确保代码的一致性和可维护性。 ## 🎯 核心原则 ### ✅ 正确做法 ```css /* 使用CSS变量 */ padding: var(--spacing-md); font-size: var(--font-size-base); border-radius: var(--size-border-radius); color: var(--color-text-primary); ``` ### ❌ 禁止做法 ```css /* 硬编码值 - 严禁使用 */ padding: 12px; font-size: 14px; border-radius: 8px; color: #ffffff; ``` ## 🎨 变量分类系统 ### 1. 尺寸变量 (`--size-*`) ```css /* 常用固定尺寸 */ --size-1: 1px; /* 边框、分割线 */ --size-2: 2px; /* 小装饰 */ --size-4: 4px; /* 小圆角 */ --size-6: 6px; /* 按钮圆角 */ --size-8: 8px; /* 标准圆角 */ --size-12: 12px; /* 卡片圆角 */ --size-16: 16px; /* 图标尺寸 */ --size-24: 24px; /* 大图标 */ --size-32: 32px; /* 按钮高度 */ --size-40: 40px; /* 操作按钮 */ --size-48: 48px; /* 头像尺寸 */ --size-60: 60px; /* 头部高度 */ ``` ### 2. 间距变量 (`--spacing-*`) ```css /* 间距系统 */ --spacing-xxs: 2px; /* 微小间距 */ --spacing-xs: 4px; /* 极小间距 */ --spacing-sm: 8px; /* 小间距 */ --spacing-md: 12px; /* 中等间距 */ --spacing-lg: 16px; /* 大间距 */ --spacing-xl: 20px; /* 超大间距 */ --spacing-2xl: 24px; /* 卡片间距 */ --spacing-3xl: 32px; /* 区域间距 */ --spacing-4xl: 40px; /* 大区域间距 */ --spacing-5xl: 48px; /* 页面间距 */ --spacing-6xl: 60px; /* 头部间距 */ ``` ### 3. 字体变量 (`--font-size-*`) ```css /* 字体大小系统 */ --font-size-xs: 12px; /* 辅助文字 */ --font-size-sm: 13px; /* 小文字 */ --font-size-base: 14px; /* 基础文字 */ --font-size-md: 15px; /* 中等文字 */ --font-size-lg: 16px; /* 大文字 */ --font-size-xl: 18px; /* 标题文字 */ --font-size-2xl: 20px; /* 副标题 */ --font-size-3xl: 24px; /* 主标题 */ ``` ### 4. 图标变量 (`--icon-size-*`) ```css /* 图标尺寸系统 */ --icon-size-xs: 12px; /* 状态图标 */ --icon-size-sm: 14px; /* 小图标 */ --icon-size-md: 16px; /* 标准图标 */ --icon-size-lg: 20px; /* 大图标 */ --icon-size-xl: 24px; /* 超大图标 */ --icon-size-2xl: 28px; /* 装饰图标 */ --icon-size-3xl: 32px; /* 特大图标 */ ``` ### 5. 颜色变量 (`--color-*`) ```css /* 文字颜色 */ --color-text-primary: /* 主要文字 */ --color-text-secondary: /* 次要文字 */ --color-text-tertiary: /* 辅助文字 */ --color-text-error: /* 错误文字 */ /* 背景颜色 */ --color-bg-primary: /* 主背景 */ --color-bg-secondary: /* 次背景 */ --color-bg-card: /* 卡片背景 */ --color-bg-hover: /* 悬停背景 */ /* 边框颜色 */ --color-border-primary: /* 主边框 */ --color-border-secondary: /* 次边框 */ --color-border-active: /* 激活边框 */ ``` ### 6. CAD软件主题色 ```css /* Creo主题 */ --color-primary: /* 蓝色主题 */ /* PDMS主题 */ --color-pdms: /* 橙色主题 */ --color-pdms-gradient: /* 橙色渐变 */ /* Revit主题 */ --color-revit: /* 绿色主题 */ --color-revit-gradient: /* 绿色渐变 */ /* 复杂度分析主题 */ --color-complexity: /* 分析橙色 */ --color-complexity-high: /* 高复杂度红色 */ --color-complexity-low: /* 低复杂度绿色 */ ``` ## 🛠️ 使用示例 ### 按钮样式 ```css .custom-button { padding: var(--spacing-md) var(--spacing-lg); font-size: var(--font-size-base); border-radius: var(--size-border-radius-button); border: var(--border-width-thin) solid var(--color-border-primary); gap: var(--spacing-sm); } ``` ### 卡片样式 ```css .card-component { padding: var(--spacing-xl); margin-bottom: var(--spacing-2xl); border-radius: var(--size-border-radius-card); border: var(--border-width-thin) solid var(--color-border-primary); background: var(--color-bg-card); } ``` ### 文字样式 ```css .title { font-size: var(--font-size-2xl); color: var(--color-text-primary); margin-bottom: var(--spacing-lg); } .subtitle { font-size: var(--font-size-base); color: var(--color-text-secondary); } ``` ### 响应式断点 ```css @media (max-width: var(--breakpoint-tablet)) { .responsive-element { padding: var(--spacing-sm); font-size: var(--font-size-sm); } } ``` ## 🔧 变量映射表 ### 常用硬编码值对应的变量 | 硬编码值 | 对应变量 | 用途 | |---------|---------|------| | `1px` | `var(--size-1)` | 边框 | | `2px` | `var(--size-2)` | 小装饰 | | `4px` | `var(--spacing-xs)` | 微间距 | | `6px` | `var(--size-6)` | 按钮圆角 | | `8px` | `var(--spacing-sm)` | 小间距 | | `10px` | `var(--size-10)` | 内边距 | | `12px` | `var(--spacing-md)` | 标准间距 | | `14px` | `var(--font-size-base)` | 基础字体 | | `16px` | `var(--spacing-lg)` | 大间距 | | `20px` | `var(--spacing-xl)` | 超大间距 | | `24px` | `var(--spacing-2xl)` | 卡片间距 | | `768px` | `var(--breakpoint-tablet)` | 平板断点 | ## 📋 开发检查清单 ### 开发前检查 - [ ] 确认所需尺寸在变量系统中是否已存在 - [ ] 如需新尺寸,先在`theme.css`中添加变量 - [ ] 确认变量命名符合语义化原则 ### 代码审查检查 - [ ] 没有使用任何硬编码的`px`、`rem`、`em`值 - [ ] 所有颜色都使用CSS变量 - [ ] 响应式断点使用变量 - [ ] 间距、字体、圆角都使用对应变量 ### 测试检查 - [ ] 组件在不同主题下显示正常 - [ ] 响应式布局工作正常 - [ ] 所有交互状态(hover、active、focus)正常 ## 🚨 常见问题 ### Q: 需要的尺寸在变量中找不到怎么办? A: 在`src/assets/styles/theme.css`中添加新变量,命名要语义化。 ### Q: 特殊组件需要特定尺寸怎么办? A: 在theme.css中的"组件特定"区域添加专用变量。 ### Q: 如何确保主题切换正常? A: 所有样式都使用CSS变量,确保亮暗主题切换时自动更新。 ### Q: 媒体查询也要使用变量吗? A: 是的,使用`var(--breakpoint-*)`系列变量。 ## 🎯 最佳实践 1. **语义化命名**:变量名要明确表达用途 2. **分层设计**:区分基础变量和语义变量 3. **一致性原则**:同类元素使用相同变量 4. **可维护性**:修改主题只需调整变量文件 5. **文档更新**:新增变量要及时更新文档 ## 🔄 持续改进 - 定期审查未使用的变量 - 根据设计需求扩展变量系统 - 收集开发反馈,优化变量分类 - 保持变量系统的简洁性和易用性 --- **记住:统一的主题系统是项目可维护性的关键!严格遵循变量使用规范。**