365 lines
8.0 KiB
Markdown
365 lines
8.0 KiB
Markdown
|
|
# Mermaid 图表渲染使用指南
|
|||
|
|
|
|||
|
|
## 简介
|
|||
|
|
|
|||
|
|
Argon 主题内置了强大的 Mermaid 图表渲染引擎,支持在文章中插入各种类型的流程图、时序图、甘特图等。本指南将帮助你快速上手使用。
|
|||
|
|
|
|||
|
|
## 基本用法
|
|||
|
|
|
|||
|
|
### 方法 1: 使用代码块(推荐)
|
|||
|
|
|
|||
|
|
在 Markdown 编辑器中,使用代码块语法插入 Mermaid 图表:
|
|||
|
|
|
|||
|
|
````markdown
|
|||
|
|
```mermaid
|
|||
|
|
graph TD
|
|||
|
|
A[开始] --> B{判断}
|
|||
|
|
B -->|是| C[执行]
|
|||
|
|
B -->|否| D[结束]
|
|||
|
|
C --> D
|
|||
|
|
```
|
|||
|
|
````
|
|||
|
|
|
|||
|
|
### 方法 2: 使用 Shortcode
|
|||
|
|
|
|||
|
|
如果你的 WordPress 编辑器支持 Shortcode,可以使用:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
[mermaid]
|
|||
|
|
graph TD
|
|||
|
|
A[开始] --> B{判断}
|
|||
|
|
B -->|是| C[执行]
|
|||
|
|
B -->|否| D[结束]
|
|||
|
|
C --> D
|
|||
|
|
[/mermaid]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 方法 3: 使用 Markdown 容器语法
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
::: mermaid
|
|||
|
|
graph TD
|
|||
|
|
A[开始] --> B{判断}
|
|||
|
|
B -->|是| C[执行]
|
|||
|
|
B -->|否| D[结束]
|
|||
|
|
C --> D
|
|||
|
|
:::
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 支持的图表类型
|
|||
|
|
|
|||
|
|
### 1. 流程图 (Flowchart)
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
graph TD
|
|||
|
|
A[开始] --> B{判断}
|
|||
|
|
B -->|是| C[执行]
|
|||
|
|
B -->|否| D[结束]
|
|||
|
|
C --> D
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**语法说明:**
|
|||
|
|
- `graph TD`: 从上到下的流程图(Top Down)
|
|||
|
|
- `graph LR`: 从左到右的流程图(Left Right)
|
|||
|
|
- `A[文本]`: 矩形节点
|
|||
|
|
- `B{文本}`: 菱形节点(判断)
|
|||
|
|
- `C((文本))`: 圆形节点
|
|||
|
|
- `-->`: 箭头连接
|
|||
|
|
- `-->|文本|`: 带标签的箭头
|
|||
|
|
|
|||
|
|
### 2. 时序图 (Sequence Diagram)
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
sequenceDiagram
|
|||
|
|
participant A as 用户
|
|||
|
|
participant B as 服务器
|
|||
|
|
A->>B: 发送请求
|
|||
|
|
B-->>A: 返回响应
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**语法说明:**
|
|||
|
|
- `participant`: 定义参与者
|
|||
|
|
- `->>`: 实线箭头
|
|||
|
|
- `-->>`: 虚线箭头
|
|||
|
|
- `as`: 别名
|
|||
|
|
|
|||
|
|
### 3. 甘特图 (Gantt Chart)
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
gantt
|
|||
|
|
title 项目计划
|
|||
|
|
dateFormat YYYY-MM-DD
|
|||
|
|
section 阶段1
|
|||
|
|
任务1 :a1, 2024-01-01, 30d
|
|||
|
|
任务2 :after a1, 20d
|
|||
|
|
section 阶段2
|
|||
|
|
任务3 :2024-02-01, 12d
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 类图 (Class Diagram)
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
classDiagram
|
|||
|
|
Animal <|-- Duck
|
|||
|
|
Animal <|-- Fish
|
|||
|
|
Animal : +int age
|
|||
|
|
Animal : +String gender
|
|||
|
|
Animal: +isMammal()
|
|||
|
|
class Duck{
|
|||
|
|
+String beakColor
|
|||
|
|
+swim()
|
|||
|
|
+quack()
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5. 状态图 (State Diagram)
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
stateDiagram-v2
|
|||
|
|
[*] --> 待处理
|
|||
|
|
待处理 --> 处理中
|
|||
|
|
处理中 --> 已完成
|
|||
|
|
处理中 --> 失败
|
|||
|
|
失败 --> 待处理
|
|||
|
|
已完成 --> [*]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 6. ER 图 (Entity Relationship Diagram)
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
erDiagram
|
|||
|
|
CUSTOMER ||--o{ ORDER : places
|
|||
|
|
ORDER ||--|{ LINE-ITEM : contains
|
|||
|
|
CUSTOMER }|..|{ DELIVERY-ADDRESS : uses
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 7. 饼图 (Pie Chart)
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
pie title 市场份额
|
|||
|
|
"产品A" : 45
|
|||
|
|
"产品B" : 30
|
|||
|
|
"产品C" : 15
|
|||
|
|
"其他" : 10
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 8. Git 图 (Git Graph)
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
gitGraph
|
|||
|
|
commit
|
|||
|
|
commit
|
|||
|
|
branch develop
|
|||
|
|
checkout develop
|
|||
|
|
commit
|
|||
|
|
commit
|
|||
|
|
checkout main
|
|||
|
|
merge develop
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 9. 用户旅程图 (User Journey)
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
journey
|
|||
|
|
title 用户购物旅程
|
|||
|
|
section 浏览
|
|||
|
|
浏览商品: 5: 用户
|
|||
|
|
查看详情: 3: 用户
|
|||
|
|
section 购买
|
|||
|
|
加入购物车: 4: 用户
|
|||
|
|
结算: 2: 用户
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 交互功能
|
|||
|
|
|
|||
|
|
### 缩放控制
|
|||
|
|
|
|||
|
|
1. **鼠标滚轮缩放**: 按住 `Ctrl` (Windows) 或 `Cmd` (Mac) + 滚轮
|
|||
|
|
2. **缩放按钮**: 点击工具栏的 `+` 和 `-` 按钮
|
|||
|
|
3. **重置缩放**: 点击工具栏的 `⟲` 按钮
|
|||
|
|
4. **双击缩放**: 双击图表智能缩放(默认大小 → 2倍 → 默认大小)
|
|||
|
|
|
|||
|
|
### 拖拽移动
|
|||
|
|
|
|||
|
|
- **鼠标拖拽**: 按住鼠标左键拖动图表
|
|||
|
|
- **触摸拖拽**: 在移动设备上单指拖动
|
|||
|
|
|
|||
|
|
### 全屏查看
|
|||
|
|
|
|||
|
|
1. 点击工具栏的 `⛶` 按钮进入全屏
|
|||
|
|
2. 按 `ESC` 键或再次点击按钮退出全屏
|
|||
|
|
3. 全屏模式下仍可缩放和拖拽
|
|||
|
|
|
|||
|
|
### 导出图表
|
|||
|
|
|
|||
|
|
1. 点击工具栏的 `⬇` 按钮打开导出菜单
|
|||
|
|
2. 选择导出格式:
|
|||
|
|
- **PNG**: 导出为图片文件(适合插入文档)
|
|||
|
|
- **SVG**: 导出为矢量图(适合编辑和打印)
|
|||
|
|
3. 导出的图表会保持当前的缩放级别
|
|||
|
|
|
|||
|
|
## 主题支持
|
|||
|
|
|
|||
|
|
Mermaid 图表会自动跟随网站主题切换:
|
|||
|
|
|
|||
|
|
- **浅色模式**: 使用 Mermaid 默认主题
|
|||
|
|
- **深色模式**: 使用 Mermaid 深色主题
|
|||
|
|
|
|||
|
|
切换主题时,图表会自动重新渲染,并保持当前的缩放级别和位置。
|
|||
|
|
|
|||
|
|
## 移动端支持
|
|||
|
|
|
|||
|
|
在移动设备上,Mermaid 图表支持:
|
|||
|
|
|
|||
|
|
1. **双指缩放**: 使用两根手指进行缩放
|
|||
|
|
2. **单指拖拽**: 使用一根手指拖动图表
|
|||
|
|
3. **响应式工具栏**: 工具栏会自动适配移动端屏幕
|
|||
|
|
|
|||
|
|
## 常见问题
|
|||
|
|
|
|||
|
|
### Q: 图表不显示怎么办?
|
|||
|
|
|
|||
|
|
**A:** 检查以下几点:
|
|||
|
|
1. 确保 Mermaid 语法正确
|
|||
|
|
2. 检查浏览器控制台是否有错误信息
|
|||
|
|
3. 尝试刷新页面
|
|||
|
|
4. 确保主题设置中启用了 Mermaid 支持
|
|||
|
|
|
|||
|
|
### Q: 图表渲染失败显示错误提示
|
|||
|
|
|
|||
|
|
**A:** 点击错误提示下方的"查看原始代码",检查 Mermaid 语法是否正确。常见错误:
|
|||
|
|
- 箭头语法错误(使用 `->` 而不是 `-->`)
|
|||
|
|
- 节点 ID 重复
|
|||
|
|
- 缺少必要的关键字
|
|||
|
|
|
|||
|
|
### Q: PJAX 页面切换后图表不显示
|
|||
|
|
|
|||
|
|
**A:** 这个问题已经修复。如果仍然遇到,请:
|
|||
|
|
1. 清除浏览器缓存
|
|||
|
|
2. 刷新页面
|
|||
|
|
3. 检查主题是否是最新版本
|
|||
|
|
|
|||
|
|
### Q: 图表太大或太小
|
|||
|
|
|
|||
|
|
**A:** 使用以下方法调整:
|
|||
|
|
1. 使用缩放按钮或滚轮缩放
|
|||
|
|
2. 双击图表智能缩放
|
|||
|
|
3. 在 Mermaid 代码中调整节点数量和布局
|
|||
|
|
|
|||
|
|
### Q: 导出的图片质量不好
|
|||
|
|
|
|||
|
|
**A:**
|
|||
|
|
1. 在导出前先放大图表
|
|||
|
|
2. 导出 SVG 格式(矢量图,无损质量)
|
|||
|
|
3. 使用专业的图片编辑软件进一步处理
|
|||
|
|
|
|||
|
|
### Q: 移动端无法缩放或拖拽
|
|||
|
|
|
|||
|
|
**A:**
|
|||
|
|
1. 确保图表已经渲染完成
|
|||
|
|
2. 对于缩放,使用双指手势
|
|||
|
|
3. 对于拖拽,确保图表已经放大(完全可见的图表不支持拖拽)
|
|||
|
|
|
|||
|
|
## 高级技巧
|
|||
|
|
|
|||
|
|
### 1. 自定义样式
|
|||
|
|
|
|||
|
|
在 Mermaid 代码中可以使用 `classDef` 定义自定义样式:
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
graph TD
|
|||
|
|
A[开始]:::highlight --> B[处理]
|
|||
|
|
B --> C[结束]:::highlight
|
|||
|
|
|
|||
|
|
classDef highlight fill:#f9f,stroke:#333,stroke-width:4px
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 添加链接
|
|||
|
|
|
|||
|
|
可以为节点添加点击链接:
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
graph TD
|
|||
|
|
A[首页] --> B[文章]
|
|||
|
|
click A "https://example.com" "访问首页"
|
|||
|
|
click B "https://example.com/post" "查看文章"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 添加注释
|
|||
|
|
|
|||
|
|
在 Mermaid 代码中使用 `%%` 添加注释:
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
graph TD
|
|||
|
|
%% 这是注释,不会显示在图表中
|
|||
|
|
A[开始] --> B[结束]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 子图
|
|||
|
|
|
|||
|
|
使用 `subgraph` 创建子图:
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
graph TD
|
|||
|
|
subgraph 模块A
|
|||
|
|
A1[功能1] --> A2[功能2]
|
|||
|
|
end
|
|||
|
|
subgraph 模块B
|
|||
|
|
B1[功能3] --> B2[功能4]
|
|||
|
|
end
|
|||
|
|
A2 --> B1
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 性能优化建议
|
|||
|
|
|
|||
|
|
1. **避免过于复杂的图表**: 节点数量建议不超过 50 个
|
|||
|
|
2. **使用批量渲染**: 多个图表会自动批量渲染,避免阻塞页面
|
|||
|
|
3. **优先渲染可见图表**: 视口外的图表会延迟渲染
|
|||
|
|
4. **合理使用缩放**: 大图表建议先缩小再查看细节
|
|||
|
|
|
|||
|
|
## 调试模式
|
|||
|
|
|
|||
|
|
如果需要调试 Mermaid 渲染问题,可以在浏览器控制台中启用调试模式:
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
// 启用调试模式
|
|||
|
|
window.argonMermaidConfig.debugMode = true;
|
|||
|
|
|
|||
|
|
// 重新渲染所有图表
|
|||
|
|
MermaidRenderer.renderAllCharts();
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
调试模式会在控制台输出详细的渲染日志。
|
|||
|
|
|
|||
|
|
## 参考资源
|
|||
|
|
|
|||
|
|
- [Mermaid 官方文档](https://mermaid-js.github.io/mermaid/)
|
|||
|
|
- [Mermaid 在线编辑器](https://mermaid.live/)
|
|||
|
|
- [Mermaid 语法速查表](https://mermaid-js.github.io/mermaid/#/./flowchart)
|
|||
|
|
|
|||
|
|
## 更新日志
|
|||
|
|
|
|||
|
|
### v1.0.0 (2026-01-22)
|
|||
|
|
- ✅ 修复 PJAX 页面切换后图表不渲染的问题
|
|||
|
|
- ✅ 修复 Mermaid 语法解析错误
|
|||
|
|
- ✅ 添加错误处理和友好提示
|
|||
|
|
- ✅ 实现工具栏和缩放控制
|
|||
|
|
- ✅ 实现鼠标拖拽移动
|
|||
|
|
- ✅ 实现图表导出(PNG、SVG)
|
|||
|
|
- ✅ 实现全屏查看模式
|
|||
|
|
- ✅ 实现主题自动同步
|
|||
|
|
- ✅ 优化渲染性能(批量渲染、延迟加载)
|
|||
|
|
- ✅ 添加移动端触摸手势支持
|
|||
|
|
- ✅ 完善生命周期管理
|
|||
|
|
|
|||
|
|
## 技术支持
|
|||
|
|
|
|||
|
|
如果遇到问题或有建议,请:
|
|||
|
|
1. 查看本文档的"常见问题"部分
|
|||
|
|
2. 在主题 GitHub 仓库提交 Issue
|
|||
|
|
3. 联系主题作者
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**提示**: 本文档会随着功能更新而更新,建议收藏以便查阅。
|