Mermaid 语法速查表

Mermaid 的完整参考文档很庞大,但其中一小部分语法几乎能覆盖大家实际绘制的所有内容。本页就是这部分精华:形状、箭头、分组、颜色,以及每种图表类型的一个可复制粘贴示例。下面每段代码都能直接渲染 —— 粘贴到编辑器中即可查看效果。

最简单能用的图表

一个流程图只需要一行声明和一个箭头。TD 表示从上到下;如果流程较宽,用 LR(从左到右)会更合适。

flowchart TD
  A[Start] --> B{Ready?}
  B -->|Yes| C[Ship it]
  B -->|No| A
一个从上到下的三节点流程图。

A、B、C 是节点 id —— 仅作内部标识,不会显示出来。方括号里的文字是标签,而括号的样式决定了节点的形状。

节点形状

形状由标签两侧的定界符决定。以下是值得记住的几种:

语法形状常见含义
A[Text]矩形步骤或操作
A(Text)圆角矩形起点或终点
A([Text])胶囊形终止符
A[[Text]]子程序调用另一个流程
A[(Text)]圆柱形数据库或存储
A((Text))圆形汇合点
A{Text}菱形决策点
A{{Text}}六边形准备步骤
A[/Text/]平行四边形输入或输出
A[/Text\]梯形手动操作

如果标签中包含括号、冒号或引号,请给标签加上引号:A["Load (raw) data"]。不加引号的话,解析器会把这些标点当作语法处理。

箭头

语法效果
A --> B箭头
A --- B无箭头的直线
A -.-> B虚线箭头
A ==> B粗箭头
A -->|label| B带标签的箭头
A --> B --> C写在一行的链式箭头
A --> B & C一个起点,两个终点

箭头的长度也有意义:--> 是一级间距,---> 会把目标节点再往下推一级。这是 mermaid 提供的最简单的布局控制方式。

使用子图分组

subgraph 会在节点周围绘制一个带标签的方框。子图可以嵌套,箭头也可以自由跨越子图边界。

flowchart LR
  subgraph api["API"]
    H[Handler] --> S[(Postgres)]
  end
  subgraph worker["Worker"]
    Q[Queue] --> W[Job]
  end
  H --> Q
两个服务,各自拥有自己的存储。

颜色与样式

style 用于给单个节点上色。classDef 配合 class 可以给一组节点上色,节点数量超过三四个时应该用这种方式。

flowchart TD
  A[OK] --> B[Failed]
  style A fill:#16a34a,stroke:#333,color:#fff
  classDef bad fill:#dc2626,stroke:#333,color:#fff
  class B bad

颜色是图表源码的一部分,因此导出后依然保留,并随文件一起传递。这不依赖渲染工具的任何主题设置。

每种图表类型各一个示例

时序图

sequenceDiagram
  participant User
  participant API
  participant DB
  User->>API: request
  API->>DB: query
  DB-->>API: rows
  API-->>User: response

类图

classDiagram
  class Animal {
    +String name
    +move()
  }
  class Dog {
    +bark()
  }
  Animal <|-- Dog

状态图

stateDiagram-v2
  [*] --> Idle
  Idle --> Running: start
  Running --> Idle: stop
  Running --> [*]: finish

实体关系图

erDiagram
  CUSTOMER ||--o{ ORDER : places
  ORDER ||--|{ LINE_ITEM : contains
  CUSTOMER {
    string name
    string email
  }

甘特图

gantt
  title Project
  dateFormat YYYY-MM-DD
  section Phase 1
  Task 1 :a1, 2026-01-01, 5d
  Task 2 :after a1, 5d

哪些平台原生支持 mermaid 渲染

  • GitHub — 围栏式 ```mermaid 代码块可以在 issue、pull request、评论和 README 文件中渲染。
  • GitLab — 同样的围栏式代码块,可在 issue、merge request 和 wiki 中渲染。
  • Notion — 将代码块语言设为 Mermaid,即可在源码旁渲染。
  • Obsidian — 围栏式 mermaid 代码块可在预览模式下渲染。
  • 文档网站 — Docusaurus、MkDocs Material 和 VitePress 都支持 mermaid 代码块。

这才是把图表保存为 mermaid 而不是图片的真正原因:图表和它所描述的内容存放在同一个文本文件中,代码评审时也能看清图表究竟改了什么。

试试本页任意一段代码

粘贴到代码标签页即可立即渲染 —— 或者在画布上搭建同样的图表,再回头查看生成的语法。

常见问题

如何在节点标签中换行?

在加引号的标签中使用 <br>:A["First line<br>Second line"]。Mermaid 会把标签内容当作 HTML 渲染,所以即使其余语法不是 HTML,这个标签依然有效。

为什么我的标签会破坏整个图表?

几乎总是因为标签中包含未加引号的方括号、圆括号、冒号或引号。把整个标签用双引号包起来,解析器就不会再把这些标点当作语法处理。

可以控制布局吗?

只能间接控制。可以选择方向(TD、LR、BT、RL),用更长的箭头(--->)把节点推得更远,或把相关节点分组到子图中。其余部分由 mermaid 自动计算 —— 没有坐标可供设置。

这个编辑器使用哪个 mermaid 版本?

使用当前主版本 Mermaid 11,因此 v10 和 v11 文档中记录的语法在这里都能渲染。

更多指南

  1. 将 mermaid 导出为 PNG 或 SVG

    四种导出 mermaid 图表的方式 —— PNG、SVG、.mmd 源码和 Markdown 代码块 —— 以及各自适用的场景。

  2. Mermaid 时序图

    参与者、箭头类型、激活条、循环与 alt 分支 —— 完整的时序图语法,附可运行示例。

打开编辑器。 免费 — 无需注册。

空白画布、代码标签页和所有导出选项 —— 现在就能在浏览器中免费使用。