MianyVue/CSS_THEME_GUIDE.md
sladro 2c2002d261 refactor: 全面优化编码规范并修复连接状态检查
## 主要改进

### 🎨 编码规范统一化
- 消除硬编码颜色值,统一使用CSS变量系统
- 替换所有rgba硬编码为预定义的主题变量
- 统一通知duration配置,从配置文件读取

### 🐛 连接状态检查修复
- 修复Creo模型分析页面未检查连接状态的bug
- 添加checkCreoConnection()函数验证连接状态
- 未连接时显示友好的警告提示

### 📝 调试输出管理
- 创建统一Logger工具类管理所有console输出
- 替换apiClient.js和websocketService.js中的console调用
- 实现开发/生产环境的日志级别控制

### 🔧 配置管理优化
- 修复组件中硬编码的duration值
- 新增SUCCESS_LONG_DURATION配置项
- 确保所有配置统一从config/cad.js读取

### 📚 开发文档
- 更新CSS_THEME_GUIDE.md主题使用指南
- 添加统一Logger工具类文档

## 技术细节
- 影响文件: 24个核心文件
- 新增工具: src/utils/logger.js
- 配置优化: 通知时长统一管理
- 主题变量: 完全消除硬编码颜色值

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 10:30:06 +08:00

242 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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. **文档更新**:新增变量要及时更新文档
## 🔄 持续改进
- 定期审查未使用的变量
- 根据设计需求扩展变量系统
- 收集开发反馈,优化变量分类
- 保持变量系统的简洁性和易用性
---
**记住:统一的主题系统是项目可维护性的关键!严格遵循变量使用规范。**