# 设计系统概述
本文档介绍阑山桌面的设计系统理念、设计原则和设计工作流程。
## 🎯 设计目标
阑山桌面的设计系统旨在:
1. **统一视觉语言** - 确保所有组件拥有一致的外观和感觉
2. **提升开发效率** - 提供开箱即用的设计资源和组件
3. **保证品质** - 通过规范确保组件的专业性和美观度
4. **灵活扩展** - 允许开发者在规范内发挥创意
## 🏛️ 设计原则
### 1. 简约至上(Simplicity First)
**核心思想**: 少即是多,去除一切不必要的视觉元素。
**实践方法**:
- ✅ 只展示最关键的信息
- ✅ 使用简洁的图标和符号
- ✅ 避免过度装饰
- ❌ 不要堆砌大量信息
- ❌ 避免使用过多颜色
**示例对比**:
```
❌ 过于复杂:
┌─────────────────────────────────┐
│ ═══ 天气预报系统 v2.0 ═══ │
│ ┌─────┐ 北京市朝阳区 │
│ │ ☀️ │ 温度: 25°C │
│ │ │ 湿度: 60% │
│ └─────┘ 风速: 3m/s │
│ 气压: 1013hPa │
│ 能见度: 10km │
│ [更新] [设置] [关于] [帮助] │
└─────────────────────────────────┘
✅ 简洁设计:
┌──────────────────┐
│ 📍 北京 │
│ │
│ ☀️ │
│ 25°C │
│ 晴 │
│ │
│ 🔄 ⚙️ │
└──────────────────┘
```
### 2. 融入系统(System Integration)
**核心思想**: 组件应该像 Windows 11 原生应用一样自然。
**设计要求**:
- ✅ 使用 Fluent Design 设计语言
- ✅ 遵循 Windows 11 视觉规范
- ✅ 使用系统字体(Microsoft YaHei UI / Segoe UI)
- ✅ 适配系统主题(亮色/暗色)
- ✅ 使用标准的圆角和阴影
**Windows 11 Fluent Design 元素**:
- 🎨 **Mica 材质** - 半透明背景,融入桌面
- 🌊 **Acrylic 亚克力** - 模糊背景,增加层次
- 🔲 **圆角矩形** - 柔和的 8px 圆角
- 💫 **微妙阴影** - 轻量的投影效果
- 🎭 **主题感知** - 响应系统主题变化
### 3. 层级清晰(Clear Hierarchy)
**核心思想**: 用户应该立即知道什么最重要。
**视觉层级工具**:
| 层级 | 字号 | 字重 | 颜色 | 用途 |
|-----|------|------|------|------|
| **一级** | 32-48px | Bold | 主要文本色 | 核心数据(温度、时间) |
| **二级** | 16-18px | SemiBold | 主要文本色 | 标题、位置 |
| **三级** | 14px | Regular | 主要文本色 | 正文内容 |
| **四级** | 12px | Regular | 次要文本色 | 辅助信息、说明 |
**示例**:
```
┌──────────────────────────┐
│ 📍 北京 [一级标题]
│ │
│ ☀️ │
│ 25°C [核心数据]
│ ↑ 30° ↓ 18° [二级数据]
│ │
│ 晴天,空气质量良好 [辅助信息]
│ │
│ 更新时间: 14:30 [次要信息]
└──────────────────────────┘
```
### 4. 即时反馈(Instant Feedback)
**核心思想**: 所有交互都应该有立即的视觉反馈。
**反馈类型**:
**悬停状态(Hover)**:
```
正常: Background = #FFFFFF
悬停: Background = #F3F3F3 ← 轻微变暗
```
**按下状态(Pressed)**:
```
正常: Background = #FFFFFF
按下: Background = #E8E8E8 ← 明显变暗
```
**加载状态(Loading)**:
```
┌──────────────┐
│ ⏳ 加载中... │ ← 动画 + 文字提示
└──────────────┘
```
**错误状态(Error)**:
```
┌──────────────┐
│ ❌ 加载失败 │ ← 红色图标 + 说明
│ 点击重试 │
└──────────────┘
```
### 5. 无障碍优先(Accessibility First)
**核心思想**: 设计应该对所有用户友好。
**无障碍要求**:
**色彩对比度**:
- ✅ 正文文字对比度 ≥ 4.5:1
- ✅ 大号文字对比度 ≥ 3:1
- ✅ UI 元素对比度 ≥ 3:1
**字体大小**:
- ✅ 最小字号 12px(辅助信息)
- ✅ 正文字号 14px
- ✅ 标题字号 ≥ 16px
**交互区域**:
- ✅ 按钮最小尺寸 32×32px
- ✅ 可点击区域清晰可见
- ✅ 提供悬停提示(Tooltip)
**示例 - 对比度检查**:
```
亮色主题:
✅ 黑色文字 (#1C1C1C) on 白色背景 (#FFFFFF) = 16.1:1
✅ 灰色文字 (#616161) on 白色背景 (#FFFFFF) = 5.7:1
❌ 浅灰文字 (#CCCCCC) on 白色背景 (#FFFFFF) = 1.6:1 [不合格]
暗色主题:
✅ 白色文字 (#FFFFFF) on 深灰背景 (#1C1C1C) = 16.1:1
✅ 浅灰文字 (#EBEBEB) on 深灰背景 (#1C1C1C) = 13.1:1
```
## 🎨 设计语言
### 视觉元素
#### 形状
- **圆角矩形**: 标准圆角 8px,营造柔和感
- **图标**: 圆润风格,线条粗细一致
- **分割线**: 1px 细线,颜色使用边框色
#### 颜色
- **中性为主**: 大量使用灰度色
- **强调色少**: 蓝色仅用于强调
- **语义颜色**: 红色(错误)、绿色(成功)、橙色(警告)
#### 空间
- **留白充足**: 不要填满所有空间
- **对齐严格**: 所有元素精确对齐
- **间距统一**: 使用 4px 基础网格
### 动效
#### 时长
- **微交互**: 150ms(悬停、点击)
- **过渡动画**: 300ms(展开、收起)
- **页面切换**: 500ms(进入、退出)
#### 缓动函数
```csharp
// 标准缓动
Easing.CubicEaseOut
// 弹性效果
Easing.BackEaseOut
// 线性(加载动画)
Easing.Linear
```
#### 动画示例
**悬停动画**:
```xml
```
## 🔄 设计工作流
### 1. 需求分析
**问自己这些问题**:
- ❓ 这个组件要解决什么问题?
- ❓ 用户最关心的信息是什么?
- ❓ 组件需要多久更新一次?
- ❓ 用户会如何与它交互?
**输出**: 功能清单和信息优先级
### 2. 信息架构
**定义信息层级**:
```
层级 1: 核心数据(大字号)
└─ 例如: 温度、时间
层级 2: 重要信息(中字号)
└─ 例如: 位置、日期
层级 3: 辅助信息(小字号)
└─ 例如: 更新时间、详细说明
```
**输出**: 信息层级图
### 3. 布局设计
**选择布局模式**:
- **单列布局**: 简单信息展示(时钟、天气)
- **网格布局**: 多项数据展示(系统监控)
- **分栏布局**: 对比信息展示(股票涨跌)
**遵循规范**:
- ✅ 16px 安全边距
- ✅ 8px 元素间距
- ✅ 使用 4px 基础网格
**输出**: 布局草图
### 4. 视觉设计
**应用设计系统**:
1. 使用系统颜色资源
2. 使用系统字体和字号
3. 添加标准圆角和阴影
4. 确保亮色和暗色主题适配
**输出**: 高保真设计稿
### 5. 开发实现
**编写 AXAML 代码**:
```xml
```
**输出**: 可运行的组件代码
### 6. 测试验证
**测试清单**:
- [ ] 亮色主题显示正常
- [ ] 暗色主题显示正常
- [ ] 不同尺寸下布局正确
- [ ] 长文本正确处理
- [ ] 错误状态显示友好
- [ ] 加载状态有反馈
- [ ] 交互流畅无卡顿
**输出**: 测试通过的组件
### 7. 文档编写
**文档内容**:
- 组件功能说明
- 配置选项说明
- 截图和演示
- 已知问题和限制
**输出**: 完整的组件文档
## 🛠️ 设计工具
### 推荐工具
| 工具 | 用途 | 链接 |
|-----|------|------|
| **Figma** | UI 设计 | https://figma.com |
| **Sketch** | UI 设计(Mac) | https://sketch.com |
| **Adobe XD** | UI 设计 | https://adobe.com/xd |
| **ColorSpace** | 颜色方案 | https://mycolor.space |
| **WhoCanUse** | 对比度检查 | https://whocanuse.com |
### 设计资源
**Windows 11 设计资源**:
- [Figma Toolkit](https://aka.ms/windows11-figma)
- [Design Guidelines](https://learn.microsoft.com/windows/apps/design/)
**图标资源**:
- [Fluent UI Icons](https://aka.ms/fluentui-icons)
- [Iconify](https://iconify.design/)
- [Emoji](https://emojipedia.org/)
## 📏 设计标准
### 组件尺寸标准
| 类型 | 宽度 | 高度 | 说明 |
|-----|------|------|------|
| **小型组件** | 120-150px | 80-100px | 单一信息 |
| **中型组件** | 200-300px | 150-250px | 常规信息 |
| **大型组件** | 350-500px | 300-400px | 丰富信息 |
| **超大组件** | 500px+ | 400px+ | 复杂功能 |
### 文本标准
| 场景 | 字号 | 行高 | 字重 |
|-----|------|------|------|
| **超大数字** | 48px | 56px | Bold (700) |
| **大数字** | 32px | 40px | Bold (700) |
| **大标题** | 24px | 32px | SemiBold (600) |
| **标题** | 18px | 24px | SemiBold (600) |
| **小标题** | 16px | 22px | SemiBold (600) |
| **正文** | 14px | 20px | Regular (400) |
| **辅助文字** | 12px | 18px | Regular (400) |
### 间距标准
| 用途 | 值 | 使用场景 |
|-----|---|---------|
| **安全边距** | 16px | 内容到组件边缘 |
| **区块间距** | 16px | 不同功能区之间 |
| **元素间距** | 8px | 相关元素之间 |
| **紧密间距** | 4px | 图标和文字之间 |
| **最小间距** | 2px | 边框到内容 |
## ✨ 最佳实践
### DO - 应该这样做
```
✅ 使用系统提供的设计资源
✅ 保持视觉一致性
✅ 注重信息层级
✅ 测试两种主题
✅ 考虑边缘情况(长文本、加载失败等)
✅ 提供清晰的交互反馈
✅ 遵循无障碍标准
✅ 保持代码整洁
```
### DON'T - 不应该这样做
```
❌ 硬编码颜色值
❌ 忽略暗色主题
❌ 使用过小的字号
❌ 堆砌过多信息
❌ 使用不统一的间距
❌ 忽略加载和错误状态
❌ 使用低对比度的颜色组合
❌ 复制粘贴未测试的代码
```
## 🎓 设计进阶
### 从优秀设计中学习
**观察 Windows 11 原生应用**:
- 天气应用
- 日历应用
- 小组件面板
- 任务栏图标
**分析其设计**:
- 如何组织信息?
- 如何使用颜色?
- 如何处理交互?
- 如何适配主题?
### 迭代改进
**收集反馈**:
- 自己使用一周
- 邀请朋友试用
- 查看使用数据
- 倾听用户意见
**持续优化**:
- 简化复杂的地方
- 增强不清晰的地方
- 修复体验问题
- 提升视觉质量
## 📖 下一步
- **必读**: [布局规范](03-布局规范.md) - 学习安全区域和间距系统
- **必读**: [视觉规范](02-视觉规范.md) - 掌握颜色、字体、图标
- **推荐**: [交互规范](04-交互规范.md) - 了解交互设计标准
- **推荐**: [主题系统](05-主题系统.md) - 实现主题切换
---
**记住**: 好的设计是简单的、一致的、有目的的。从规范开始,在实践中成长。