Microsoft Fluent Design System 实战参考
Windows 11 设计语言的实战速查,覆盖材质、控件、布局和跨平台适配。
适用场景
- Windows 桌面应用 UI 设计(WinUI / Electron / WPF)
- 需要 Windows 原生感的跨平台应用
- Electron 应用在 Windows 上的视觉适配
- 审计现有 UI 是否符合 Fluent Design
不适用
- macOS / iOS 原生应用(参考 apple-hig)
- Android 应用(参考 material-design)
1. 核心设计原则
Fluent Design 2 的五大支柱:
| 原则 |
含义 |
实践 |
| Light(光照) |
用光线引导注意力 |
Reveal Highlight、悬浮发光效果 |
| Depth(深度) |
通过层次感建立空间 |
阴影、z-axis 堆叠 |
| Motion(动效) |
有意义的动画 |
Connected Animation、页面转场 |
| Material(材质) |
半透明材质融入环境 |
Mica、Acrylic |
| Scale(缩放) |
适应各种设备 |
响应式布局、触控适配 |
与 Apple HIG 的核心区别
Apple: 内容优先,UI 退后,极简克制
Fluent: 环境融合,材质透明,层次丰富
Apple: 实色背景为主
Fluent: Mica/Acrylic 半透明为主
Apple: 标题栏极简(红黄绿三点)
Fluent: 标题栏可承载导航(NavigationView)
2. 材质系统
Mica(云母)
特点:从桌面壁纸取色,轻微染色效果
用于:窗口背景、标题栏背景
性能:低开销(静态取色,不实时模糊)
/* Mica 模拟(Electron/Web) */
.mica-bg {
background-color: rgba(243, 243, 243, 0.9); /* Light */
/* Dark: rgba(32, 32, 32, 0.9) */
}
Acrylic(亚克力)
特点:高斯模糊 + 噪点 + 排除混合
用于:弹出菜单、Flyout、Command Bar、侧边栏
性能:中等开销(实时 blur)
分类:
- Background Acrylic:模糊桌面内容(窗口级)
- In-App Acrylic:模糊应用内内容(组件级)
/* Acrylic 模拟 */
.acrylic {
background: rgba(255, 255, 255, 0.7);
backdrop-filter: blur(60px) saturate(125%);
-webkit-backdrop-filter: blur(60px) saturate(125%);
/* 可加噪点纹理 */
}
.acrylic-dark {
background: rgba(32, 32, 32, 0.65);
backdrop-filter: blur(60px) saturate(125%);
}
Smoke(烟雾)
用于:弹窗遮罩层
效果:暗色半透明覆盖
.smoke {
background: rgba(0, 0, 0, 0.3); /* Light */
/* Dark: rgba(0, 0, 0, 0.5) */
}
材质选择规则
| 场景 |
材质 |
原因 |
| 窗口主背景 |
Mica |
低性能开销,与桌面融合 |
| 弹出菜单/Flyout |
Acrylic |
暗示临时性和层次 |
| 侧边栏 |
Mica Alt |
区分于主内容区 |
| 对话框遮罩 |
Smoke |
聚焦于对话框内容 |
| 性能敏感场景 |
实色 fallback |
Acrylic 可选降级 |
3. 颜色系统
Windows System Colors
| 颜色 |
Light HEX |
Dark HEX |
用途 |
| Accent(默认蓝) |
#0078D4 |
#4CC2FF |
主强调色、链接、选中态 |
| Accent Light 1 |
#429CE3 |
#62CDFF |
Hover 态 |
| Accent Light 2 |
#65B4EE |
#99EBFF |
次要强调 |
| Accent Dark 1 |
#005A9E |
#0093F9 |
Pressed 态 |
Windows 用户可自定义 Accent Color,应用需要适配任意颜色。
语义色
| 角色 |
Light |
Dark |
| Text Primary |
#1A1A1A / rgba(0,0,0,0.9) |
#FFFFFF |
| Text Secondary |
rgba(0,0,0,0.6) |
rgba(255,255,255,0.79) |
| Text Tertiary |
rgba(0,0,0,0.45) |
rgba(255,255,255,0.54) |
| Text Disabled |
rgba(0,0,0,0.36) |
rgba(255,255,255,0.36) |
| Subtle Fill |
rgba(0,0,0,0.04) |
rgba(255,255,255,0.06) |
| Secondary Fill |
rgba(0,0,0,0.06) |
rgba(255,255,255,0.08) |
| Card Background |
rgba(255,255,255,0.7) |
rgba(255,255,255,0.05) |
| Stroke Default |
rgba(0,0,0,0.06) |
rgba(255,255,255,0.07) |
| Stroke Divider |
rgba(0,0,0,0.08) |
rgba(255,255,255,0.08) |
| Layer Default |
rgba(255,255,255,0.5) |
rgba(58,58,58,0.3) |
状态色
| 状态 |
Light |
Dark |
用途 |
| Success |
#0F7B0F |
#6CCB5F |
成功、完成 |
| Caution |
#9D5D00 |
#FCE100 |
警告 |
| Critical |
#C42B1C |
#FF99A4 |
错误、危险 |
| Info |
#0078D4 |
#4CC2FF |
信息(= Accent) |
4. 排版
字体栈
font-family: 'Segoe UI Variable', 'Segoe UI', system-ui, sans-serif;
Windows 11 使用 Segoe UI Variable(可变字体)。旧版 Windows 用 Segoe UI。
字号层级
| 层级 |
字号 |
字重 |
行高 |
用途 |
| Display |
68px |
Semibold |
92px |
超大标题(极少用) |
| Title Large |
40px |
Semibold |
52px |
页面标题 |
| Title |
28px |
Semibold |
36px |
区块标题 |
| Subtitle |
20px |
Semibold |
28px |
次级标题 |
| Body Large |
18px |
Regular |
24px |
强调正文 |
| Body |
14px |
Regular |
20px |
默认正文 |
| Body Strong |
14px |
Semibold |
20px |
加粗正文 |
| Caption |
12px |
Regular |
16px |
辅助文字 |
| Caption Strong |
12px |
Semibold |
16px |
加粗辅助 |
与 Apple 对比
Windows Body = 14px → macOS Body = 13px → iOS Body = 17px
Windows 标题偏大偏粗(Semibold),Apple 标题偏克制(Regular/Medium)
5. 控件规格
标准控件尺寸
| 控件 |
高度 |
圆角 |
内边距 |
| Button |
32px |
4px |
12px 水平 |
| TextBox |
32px |
4px |
8px 水平 |
| ComboBox |
32px |
4px |
12px 水平 |
| Checkbox |
20×20px |
4px |
— |
| RadioButton |
20×20px |
50% |
— |
| ToggleSwitch |
20×40px |
10px |
— |
| Slider |
4px 轨道 |
2px |
— |
| ProgressBar |
2px 轨道 |
1px |
— |
| InfoBar |
48px |
4px |
12px |
圆角规则(Windows 11)
| 元素 |
圆角 |
| 窗口 |
8px |
| 对话框/Flyout |
8px |
| 控件(Button/Input) |
4px |
| Checkbox/Toggle |
4px |
| Tooltip |
4px |
| 嵌套元素 |
内层比外层小 2px |
嵌套圆角规则:外层 8px → 内层 6px → 再内层 4px。避免圆角与直角混搭。
底部圆角加粗(Button 特色)
WinUI 3 的 Button 底边比其他三边 粗 1px(border-bottom: 1px solid darker),模拟微弱的 3D 凸起感:
.fluent-button {
border: 1px solid rgba(0, 0, 0, 0.06);
border-bottom: 1px solid rgba(0, 0, 0, 0.16); /* 底部加深 */
border-radius: 4px;
background: rgba(255, 255, 255, 0.7);
}
6. 导航模式
NavigationView(最常用)
┌─ 汉堡按钮 ─────────────────────────────┐
│ ☰ App Name │
├─────────┬───────────────────────────────┤
│ 🏠 Home │ │
│ 📦 Items │ Content Area │
│ 📊 Stats │ │
│ │ │
│─────────│ │
│ ⚙️ 设置 │ │
└─────────┴───────────────────────────────┘
| 模式 |
触发条件 |
特征 |
| Left Expanded |
窗口宽 ≥ 1008px |
Sidebar 常驻展开 |
| Left Compact |
640px ≤ 宽 < 1008px |
只显示图标 |
| Left Minimal |
宽 < 640px |
汉堡菜单,点击展开 |
| Top |
— |
水平导航栏 |
TabView(多标签页)
类似浏览器 Tab,用于多文档/多实例场景。
Breadcrumb Bar
Home > Category > Subcategory > Current
用于深层级导航,每级可点击跳转。
7. 阴影系统
Elevation(海拔)
| 层级 |
阴影 |
用途 |
| 0 |
无 |
内容区域 |
| 2 |
0 2px 4px rgba(0,0,0,0.04) |
Card、Expander |
| 4 |
0 2px 4px rgba(0,0,0,0.04), 0 0 2px rgba(0,0,0,0.06) |
CommandBar |
| 8 |
0 4px 8px rgba(0,0,0,0.08), 0 0 2px rgba(0,0,0,0.06) |
Flyout、Menu |
| 16 |
0 8px 16px rgba(0,0,0,0.12), 0 0 2px rgba(0,0,0,0.06) |
Dialog |
| 32 |
0 16px 32px rgba(0,0,0,0.16), 0 0 2px rgba(0,0,0,0.06) |
拖拽浮层 |
| 64 |
0 32px 64px rgba(0,0,0,0.24), 0 0 2px rgba(0,0,0,0.06) |
全屏弹窗 |
Dark 模式下阴影透明度加倍,但实际效果更弱。Fluent 2 更依赖 stroke(border)区分层次。
8. 动画
标准时长
| 类型 |
时长 |
缓动 |
| Fast(控件响应) |
83ms |
ease-out |
| Normal(状态切换) |
167ms |
ease-out |
| Slow(页面转场) |
250ms |
ease-in-out |
| Emphasis(强调) |
333ms |
ease-in-out |
Fluent 标准缓动
/* Decelerate (ease-out) — 进入 */
--fluent-decelerate: cubic-bezier(0, 0, 0, 1);
/* Accelerate (ease-in) — 退出 */
--fluent-accelerate: cubic-bezier(1, 0, 1, 1);
/* Standard (ease-in-out) — 通用 */
--fluent-standard: cubic-bezier(0.8, 0, 0.2, 1);
/* Point to Point — 不离开屏幕的移动 */
--fluent-point: cubic-bezier(0.55, 0.55, 0, 1);
动画原则
✅ 进入用 Decelerate — 从快到慢(感觉有惯性)
✅ 退出用 Accelerate — 从慢到快(快速消失)
✅ 不离开屏幕的移动用 Point to Point
❌ 不用 linear — Fluent 所有动画都有缓动
9. Electron 适配 Windows
窗口设置
// 无框窗口 + 自定义标题栏
const win = new BrowserWindow({
frame: false,
titleBarStyle: 'hidden',
titleBarOverlay: {
color: 'transparent',
symbolColor: '#1A1A1A',
height: 48, // Fluent 标题栏高度
},
});
圆角窗口
Windows 11 自动给窗口加 8px 圆角,不需要 CSS 处理。但应用内容需要配合:
/* 避免内容溢出窗口圆角 */
html, body {
border-radius: 8px;
overflow: hidden;
}
字体渲染
/* Windows 上启用亚像素渲染 */
body {
-webkit-font-smoothing: auto; /* 不要用 antialiased */
text-rendering: optimizeLegibility;
}
macOS 用 antialiased(灰度抗锯齿),Windows 用 auto(ClearType 亚像素)。跨平台 Electron 应用需分平台设置。
10. 与 macOS 差异速查
| 差异点 |
Windows (Fluent) |
macOS (HIG) |
| 窗口按钮 |
右上角(最小化/最大化/关闭) |
左上角(红黄绿) |
| 默认正文 |
14px Segoe UI |
13px SF Pro |
| 控件高度 |
32px |
22px |
| 控件圆角 |
4px |
5px |
| 背景材质 |
Mica / Acrylic |
vibrancy(仅原生) |
| 主强调色 |
#0078D4(用户可改) |
#007AFF |
| 滚动条 |
默认可见 2px |
默认隐藏 |
| 上下文菜单 |
右键 |
右键 / Ctrl+Click |
| 设置入口 |
NavigationView 最下方 |
菜单栏 → 偏好设置 |
11. Checklist
设计审计
Electron 适配
来源
Microsoft Fluent Design System 2 (fluent2.microsoft.design) + WinUI 3 Gallery 控件参考。
1---2name: fluent-design3description: Microsoft Fluent Design System 实战参考。涵盖 Windows 11 设计语言、Mica/Acrylic 材质、WinUI 3 控件规格、排版层级、布局模式、Dark Mode、辅助功能和 Electron 适配。适用于开发 Windows 桌面应用或需要 Windows 原生感的跨平台应用。4---5
6# Microsoft Fluent Design System 实战参考
7
8Windows 11 设计语言的实战速查,覆盖材质、控件、布局和跨平台适配。
9
10## 适用场景
11
12- Windows 桌面应用 UI 设计(WinUI / Electron / WPF)
13- 需要 Windows 原生感的跨平台应用
14- Electron 应用在 Windows 上的视觉适配
15- 审计现有 UI 是否符合 Fluent Design
16
17## 不适用
18
19- macOS / iOS 原生应用(参考 apple-hig)
20- Android 应用(参考 material-design)
21
22---
23
24## 1. 核心设计原则
25
26Fluent Design 2 的五大支柱:
27
28| 原则 | 含义 | 实践 |
29|------|------|------|
30| **Light(光照)** | 用光线引导注意力 | Reveal Highlight、悬浮发光效果 |
31| **Depth(深度)** | 通过层次感建立空间 | 阴影、z-axis 堆叠 |
32| **Motion(动效)** | 有意义的动画 | Connected Animation、页面转场 |
33| **Material(材质)** | 半透明材质融入环境 | Mica、Acrylic |
34| **Scale(缩放)** | 适应各种设备 | 响应式布局、触控适配 |
35
36### 与 Apple HIG 的核心区别
37
38```
39Apple: 内容优先,UI 退后,极简克制
40Fluent: 环境融合,材质透明,层次丰富
41Apple: 实色背景为主
42Fluent: Mica/Acrylic 半透明为主
43Apple: 标题栏极简(红黄绿三点)
44Fluent: 标题栏可承载导航(NavigationView)
45```
46
47---
48
49## 2. 材质系统
50
51### Mica(云母)
52
53```
54特点:从桌面壁纸取色,轻微染色效果
55用于:窗口背景、标题栏背景
56性能:低开销(静态取色,不实时模糊)
57```
58
59```css
60/* Mica 模拟(Electron/Web) */
61.mica-bg {
62 background-color: rgba(243, 243, 243, 0.9); /* Light */
63 /* Dark: rgba(32, 32, 32, 0.9) */
64}
65```
66
67### Acrylic(亚克力)
68
69```
70特点:高斯模糊 + 噪点 + 排除混合
71用于:弹出菜单、Flyout、Command Bar、侧边栏
72性能:中等开销(实时 blur)
73分类:
74 - Background Acrylic:模糊桌面内容(窗口级)
75 - In-App Acrylic:模糊应用内内容(组件级)
76```
77
78```css
79/* Acrylic 模拟 */
80.acrylic {
81 background: rgba(255, 255, 255, 0.7);
82 backdrop-filter: blur(60px) saturate(125%);
83 -webkit-backdrop-filter: blur(60px) saturate(125%);
84 /* 可加噪点纹理 */
85}
86
87.acrylic-dark {
88 background: rgba(32, 32, 32, 0.65);
89 backdrop-filter: blur(60px) saturate(125%);
90}
91```
92
93### Smoke(烟雾)
94
95```
96用于:弹窗遮罩层
97效果:暗色半透明覆盖
98```
99
100```css
101.smoke {
102 background: rgba(0, 0, 0, 0.3); /* Light */
103 /* Dark: rgba(0, 0, 0, 0.5) */
104}
105```
106
107### 材质选择规则
108
109| 场景 | 材质 | 原因 |
110|------|------|------|
111| 窗口主背景 | Mica | 低性能开销,与桌面融合 |
112| 弹出菜单/Flyout | Acrylic | 暗示临时性和层次 |
113| 侧边栏 | Mica Alt | 区分于主内容区 |
114| 对话框遮罩 | Smoke | 聚焦于对话框内容 |
115| 性能敏感场景 | 实色 fallback | Acrylic 可选降级 |
116
117---
118
119## 3. 颜色系统
120
121### Windows System Colors
122
123| 颜色 | Light HEX | Dark HEX | 用途 |
124|------|-----------|----------|------|
125| Accent(默认蓝) | `#0078D4` | `#4CC2FF` | 主强调色、链接、选中态 |
126| Accent Light 1 | `#429CE3` | `#62CDFF` | Hover 态 |
127| Accent Light 2 | `#65B4EE` | `#99EBFF` | 次要强调 |
128| Accent Dark 1 | `#005A9E` | `#0093F9` | Pressed 态 |
129
130> Windows 用户可自定义 Accent Color,应用需要适配任意颜色。
131
132### 语义色
133
134| 角色 | Light | Dark |
135|------|-------|------|
136| Text Primary | `#1A1A1A` / `rgba(0,0,0,0.9)` | `#FFFFFF` |
137| Text Secondary | `rgba(0,0,0,0.6)` | `rgba(255,255,255,0.79)` |
138| Text Tertiary | `rgba(0,0,0,0.45)` | `rgba(255,255,255,0.54)` |
139| Text Disabled | `rgba(0,0,0,0.36)` | `rgba(255,255,255,0.36)` |
140| Subtle Fill | `rgba(0,0,0,0.04)` | `rgba(255,255,255,0.06)` |
141| Secondary Fill | `rgba(0,0,0,0.06)` | `rgba(255,255,255,0.08)` |
142| Card Background | `rgba(255,255,255,0.7)` | `rgba(255,255,255,0.05)` |
143| Stroke Default | `rgba(0,0,0,0.06)` | `rgba(255,255,255,0.07)` |
144| Stroke Divider | `rgba(0,0,0,0.08)` | `rgba(255,255,255,0.08)` |
145| Layer Default | `rgba(255,255,255,0.5)` | `rgba(58,58,58,0.3)` |
146
147### 状态色
148
149| 状态 | Light | Dark | 用途 |
150|------|-------|------|------|
151| Success | `#0F7B0F` | `#6CCB5F` | 成功、完成 |
152| Caution | `#9D5D00` | `#FCE100` | 警告 |
153| Critical | `#C42B1C` | `#FF99A4` | 错误、危险 |
154| Info | `#0078D4` | `#4CC2FF` | 信息(= Accent) |
155
156---
157
158## 4. 排版
159
160### 字体栈
161
162```css
163font-family: 'Segoe UI Variable', 'Segoe UI', system-ui, sans-serif;
164```
165
166Windows 11 使用 Segoe UI Variable(可变字体)。旧版 Windows 用 Segoe UI。
167
168### 字号层级
169
170| 层级 | 字号 | 字重 | 行高 | 用途 |
171|------|------|------|------|------|
172| Display | 68px | Semibold | 92px | 超大标题(极少用) |
173| Title Large | 40px | Semibold | 52px | 页面标题 |
174| Title | 28px | Semibold | 36px | 区块标题 |
175| Subtitle | 20px | Semibold | 28px | 次级标题 |
176| Body Large | 18px | Regular | 24px | 强调正文 |
177| Body | 14px | Regular | 20px | 默认正文 |
178| Body Strong | 14px | Semibold | 20px | 加粗正文 |
179| Caption | 12px | Regular | 16px | 辅助文字 |
180| Caption Strong | 12px | Semibold | 16px | 加粗辅助 |
181
182### 与 Apple 对比
183
184```
185Windows Body = 14px → macOS Body = 13px → iOS Body = 17px
186Windows 标题偏大偏粗(Semibold),Apple 标题偏克制(Regular/Medium)
187```
188
189---
190
191## 5. 控件规格
192
193### 标准控件尺寸
194
195| 控件 | 高度 | 圆角 | 内边距 |
196|------|------|------|--------|
197| Button | 32px | 4px | 12px 水平 |
198| TextBox | 32px | 4px | 8px 水平 |
199| ComboBox | 32px | 4px | 12px 水平 |
200| Checkbox | 20×20px | 4px | — |
201| RadioButton | 20×20px | 50% | — |
202| ToggleSwitch | 20×40px | 10px | — |
203| Slider | 4px 轨道 | 2px | — |
204| ProgressBar | 2px 轨道 | 1px | — |
205| InfoBar | 48px | 4px | 12px |
206
207### 圆角规则(Windows 11)
208
209| 元素 | 圆角 |
210|------|------|
211| 窗口 | 8px |
212| 对话框/Flyout | 8px |
213| 控件(Button/Input) | 4px |
214| Checkbox/Toggle | 4px |
215| Tooltip | 4px |
216| 嵌套元素 | 内层比外层小 2px |
217
218> **嵌套圆角规则**:外层 8px → 内层 6px → 再内层 4px。避免圆角与直角混搭。
219
220### 底部圆角加粗(Button 特色)
221
222WinUI 3 的 Button 底边比其他三边 **粗 1px**(`border-bottom: 1px solid darker`),模拟微弱的 3D 凸起感:
223
224```css
225.fluent-button {
226 border: 1px solid rgba(0, 0, 0, 0.06);
227 border-bottom: 1px solid rgba(0, 0, 0, 0.16); /* 底部加深 */
228 border-radius: 4px;
229 background: rgba(255, 255, 255, 0.7);
230}
231```
232
233---
234
235## 6. 导航模式
236
237### NavigationView(最常用)
238
239```
240┌─ 汉堡按钮 ─────────────────────────────┐
241│ ☰ App Name │
242├─────────┬───────────────────────────────┤
243│ 🏠 Home │ │
244│ 📦 Items │ Content Area │
245│ 📊 Stats │ │
246│ │ │
247│─────────│ │
248│ ⚙️ 设置 │ │
249└─────────┴───────────────────────────────┘
250```
251
252| 模式 | 触发条件 | 特征 |
253|------|---------|------|
254| Left Expanded | 窗口宽 ≥ 1008px | Sidebar 常驻展开 |
255| Left Compact | 640px ≤ 宽 < 1008px | 只显示图标 |
256| Left Minimal | 宽 < 640px | 汉堡菜单,点击展开 |
257| Top | — | 水平导航栏 |
258
259### TabView(多标签页)
260
261类似浏览器 Tab,用于多文档/多实例场景。
262
263### Breadcrumb Bar
264
265```
266Home > Category > Subcategory > Current
267```
268
269用于深层级导航,每级可点击跳转。
270
271---
272
273## 7. 阴影系统
274
275### Elevation(海拔)
276
277| 层级 | 阴影 | 用途 |
278|------|------|------|
279| 0 | 无 | 内容区域 |
280| 2 | `0 2px 4px rgba(0,0,0,0.04)` | Card、Expander |
281| 4 | `0 2px 4px rgba(0,0,0,0.04), 0 0 2px rgba(0,0,0,0.06)` | CommandBar |
282| 8 | `0 4px 8px rgba(0,0,0,0.08), 0 0 2px rgba(0,0,0,0.06)` | Flyout、Menu |
283| 16 | `0 8px 16px rgba(0,0,0,0.12), 0 0 2px rgba(0,0,0,0.06)` | Dialog |
284| 32 | `0 16px 32px rgba(0,0,0,0.16), 0 0 2px rgba(0,0,0,0.06)` | 拖拽浮层 |
285| 64 | `0 32px 64px rgba(0,0,0,0.24), 0 0 2px rgba(0,0,0,0.06)` | 全屏弹窗 |
286
287> Dark 模式下阴影透明度加倍,但实际效果更弱。Fluent 2 更依赖 stroke(border)区分层次。
288
289---
290
291## 8. 动画
292
293### 标准时长
294
295| 类型 | 时长 | 缓动 |
296|------|------|------|
297| Fast(控件响应) | 83ms | ease-out |
298| Normal(状态切换) | 167ms | ease-out |
299| Slow(页面转场) | 250ms | ease-in-out |
300| Emphasis(强调) | 333ms | ease-in-out |
301
302### Fluent 标准缓动
303
304```css
305/* Decelerate (ease-out) — 进入 */
306--fluent-decelerate: cubic-bezier(0, 0, 0, 1);
307
308/* Accelerate (ease-in) — 退出 */
309--fluent-accelerate: cubic-bezier(1, 0, 1, 1);
310
311/* Standard (ease-in-out) — 通用 */
312--fluent-standard: cubic-bezier(0.8, 0, 0.2, 1);
313
314/* Point to Point — 不离开屏幕的移动 */
315--fluent-point: cubic-bezier(0.55, 0.55, 0, 1);
316```
317
318### 动画原则
319
320```
321✅ 进入用 Decelerate — 从快到慢(感觉有惯性)
322✅ 退出用 Accelerate — 从慢到快(快速消失)
323✅ 不离开屏幕的移动用 Point to Point
324❌ 不用 linear — Fluent 所有动画都有缓动
325```
326
327---
328
329## 9. Electron 适配 Windows
330
331### 窗口设置
332
333```typescript
334// 无框窗口 + 自定义标题栏
335const win = new BrowserWindow({
336 frame: false,
337 titleBarStyle: 'hidden',
338 titleBarOverlay: {
339 color: 'transparent',
340 symbolColor: '#1A1A1A',
341 height: 48, // Fluent 标题栏高度
342 },
343});
344```
345
346### 圆角窗口
347
348Windows 11 自动给窗口加 8px 圆角,**不需要 CSS 处理**。但应用内容需要配合:
349
350```css
351/* 避免内容溢出窗口圆角 */
352html, body {
353 border-radius: 8px;
354 overflow: hidden;
355}
356```
357
358### 字体渲染
359
360```css
361/* Windows 上启用亚像素渲染 */
362body {
363 -webkit-font-smoothing: auto; /* 不要用 antialiased */
364 text-rendering: optimizeLegibility;
365}
366```
367
368> macOS 用 `antialiased`(灰度抗锯齿),Windows 用 `auto`(ClearType 亚像素)。跨平台 Electron 应用需分平台设置。
369
370---
371
372## 10. 与 macOS 差异速查
373
374| 差异点 | Windows (Fluent) | macOS (HIG) |
375|--------|-----------------|-------------|
376| 窗口按钮 | 右上角(最小化/最大化/关闭) | 左上角(红黄绿) |
377| 默认正文 | 14px Segoe UI | 13px SF Pro |
378| 控件高度 | 32px | 22px |
379| 控件圆角 | 4px | 5px |
380| 背景材质 | Mica / Acrylic | vibrancy(仅原生) |
381| 主强调色 | `#0078D4`(用户可改) | `#007AFF` |
382| 滚动条 | 默认可见 2px | 默认隐藏 |
383| 上下文菜单 | 右键 | 右键 / Ctrl+Click |
384| 设置入口 | NavigationView 最下方 | 菜单栏 → 偏好设置 |
385
386---
387
388## 11. Checklist
389
390### 设计审计
391- [ ] 窗口圆角 8px(Windows 11)
392- [ ] 控件圆角 4px
393- [ ] 使用 Mica 或 Acrylic 背景
394- [ ] 按钮底边加深 1px
395- [ ] 导航使用 NavigationView 模式
396- [ ] 文字使用 Segoe UI Variable
397- [ ] 阴影使用标准 elevation 级别
398- [ ] 动画使用 Fluent 标准缓动
399
400### Electron 适配
401- [ ] titleBarOverlay 配置正确
402- [ ] 窗口圆角不裁剪内容
403- [ ] 字体渲染用 `auto`(非 antialiased)
404- [ ] accent color 支持系统设置
405
406---
407
408## 来源
409
410Microsoft Fluent Design System 2 (fluent2.microsoft.design) + WinUI 3 Gallery 控件参考。