参考文档
流程图
语法说明
图标方向
Mermaid支持多种图表的方向,语法如下:
1 | graph 方向描述 |
方向描述
方向描述 | 含义 |
---|---|
TB | 从上到下 |
BT | 从下到上 |
RL | 从右到左 |
LR | 从左到右 |
节点描述
即流程图中每个文本块,包括开始、结束、处理、判断等。Mermaid中每个节点都有一个id,以及节点的文字。
表述 | 说明 |
---|---|
id[文字] | 矩形节点 |
id(文字) | 圆角矩形节点 |
id((文字)) | 圆形节点 |
id>文字} | 右向旗帜状节点 |
id{文字} | 菱形节点 |
需要注意的是,如果节点的文字中包含标点符号,需要时用双引号包裹起来。 |
希望在文字中换行,请使用
替换换行
节点间的连线
表述 | 说明 |
---|---|
> | 添加尾部箭头 |
- | 不添加尾部箭头 |
– | 单线 |
–text– | 单线上加文字 |
== | 粗线 |
==text== | 粗线加文字 |
-.- | 虚线 |
-.text.- | 虚线上加文字 |
子图表
使用以下语法添加子图表
1 | subgraph 子图表名称 |
对font awesome的支持
使用fa: #图表名称#
的语法添加fontawesome
1 | graph TD; |
方向
- TB/TD - top bottom
- BT - bottom top
- RL - right left
- LR - left right
向下
1 | graph TB |
向下
1 | graph TD |
向上
1 | graph BT |
从右向左
1 | graph RL |
从左向右
1 | graph LR |
节点
普通节点
1 | graph LR |
带文字节点
1 | graph LR |
圆角节点
1 | graph LR |
圆形节点
1 | graph LR |
不对称节点
1 | graph LR |
菱形节点
1 | graph LR |
连接线
实线,有箭头,无文字
1 | graph LR |
实线,无箭头,无文字
1 | graph LR |
实线,无箭头,有文字
前面两个-
,后面三个-
1 | graph LR |
或
1 | graph LR |
实线,有箭头,有文字
1 | graph LR |
或
1 | graph LR |
虚线,有箭头,有文字
1 | graph LR |
大箭头,无文字
1 | graph LR |
大箭头,文字
1 | graph LR |
特殊语法
引号
文字里用引号避免一些特殊字符的错误。比如矩形节点里有()时就无法渲染,所以加上引号。
1 | graph LR |
实体字符
可以使用 HTML 中的实体字符。
1 | graph LR |
子图
1 | graph TB |
样式
linkStyle 后面的数字表示第几根线,从 0 开始。可以指定颜色和粗细。
1 | graph TD; |
设置节点背景,边框颜色,粗细,实线还是虚线
1 | graph LR |
样式类
1 | graph LR |
1 | classDef default fill:#f9f,stroke:#333,stroke-width:4px; |
定义一个名为 default 的类,节点没有指定特定样式类时,将都会应用这个样式类。
图标
可以使用 Font Awesome 图标。语法 fa:icon class name。
1 | graph TD |
时序图
1 | sequenceDiagram |
参与者
如果不显示声明,参与者将根据第一次出现的顺序排列,如:
1 | sequenceDiagram |
第一条语句出现了两个参与者角色,而在这条语句中,Alice 在 John 之前,所以图中也是这个顺序。如果不想根据第一次出现的顺序来排,可以主动声明以定义顺序:
1 | sequenceDiagram |
别名
可以给角色写一个简短的别名以方便书写。
1 | sequenceDiagram |
消息
消息连线有六种样式。
有一个-
是实线,两个-
是虚线。
1 | sequenceDiagram |
活动期
1 | sequenceDiagram |
使用 +/-
的更方便的写法:
1 | sequenceDiagram |
可以嵌套:
1 | sequenceDiagram |
备注
语法:Note [ right of | left of | over ] [Actor]。
表述 | 含义 |
---|---|
right of | 右侧 |
left of | 左侧 |
over | 在当中,可以横跨多个参与者 |
1 | sequenceDiagram |
over 可用于单独一个角色上,也可以用于相邻两个角色间:
1 | sequenceDiagram |
循环
语法:
1 | loop Loop text |
选择
语法:
1 | alt Describing text |
可选条件,比如在没有 else 分支的情况下使用,有点类似 java 中的 switch 的 default 分支,代表剩下所有情况。
1 | opt Describing text |