Mermaid流程图Skill mermaid-flowchart

Mermaid流程图是一种基于文本的图表工具,它允许用户使用文本和代码来创建和维护流程图。它支持多种节点形状、链接样式、方向配置以及交互功能,非常适合软件开发和数据可视化领域。

前端开发 0 次安装 8 次浏览 更新于 2/28/2026

流程图由节点(几何形状)和(箭头或线条)组成。Mermaid代码定义了如何制作节点和边,并适应不同类型的箭头、多向箭头以及与子图的任何链接。

如果您在流程图节点中使用“end”一词,请将整个词或任意字母大写(例如“End”或“END”),或应用此[变通方法](https://github.com/mermaid-js/mermaid/issues/1444#issuecomment-639528897)。
小写字母输入“end”将破坏流程图。
如果您在连接流程图节点中使用字母“o”或“x”作为第一个字母,请在字母前加空格或将字母大写(例如“dev--- ops”、“dev---Ops”)。

输入“A---oB”将创建一个[圆形边](#circle-edge-example)。

输入“A---xB”将创建一个[交叉边](#cross-edge-example)。

默认的节点

---
标题:节点
---
流程图LR
    id
id是显示在框中的文本。
除了`流程图`,也可以使用`图`。

带文本的节点

也可以设置框中的文本,使其与id不同。如果这样做了几次,最后找到的文本将被使用。此外,如果您稍后为节点定义了边缘,可以省略文本定义。渲染框时将使用先前定义的文本。

---
标题:带文本的节点
---
流程图LR
    id1[这是框中的文本]

Unicode文本

使用"包含Unicode文本。

流程图LR
    id["这是❤Unicode"]

Markdown格式

使用双引号和反引号"text"`包含Markdown文本。

---
配置:
  流程图:
    htmlLabels: false
---
流程图LR
    markdown["`这是**Markdown**`"]
    newLines["`Line1
     Line 2
     Line 3`"]
    markdown --> newLines

方向

此语句声明流程图的方向。

这声明流程图从上到下(TDTB)。

流程图TD
    开始 --> 停止

这声明流程图从左到右(LR)。

流程图LR
    开始 --> 停止

可能的流程图方向有:

  • TB - 从上到下
  • TD - 从上到下/与从上到下相同
  • BT - 从下到上
  • RL - 从右到左
  • LR - 从左到右

节点形状

带圆角的节点

流程图LR
    id1(这是框中的文本)

体育场形状的节点

流程图LR
    id1([这是框中的文本])

子程序形状的节点

流程图LR
    id1[[这是框中的文本]]

圆柱形状的节点

流程图LR
    id1[(数据库)]

圆形的节点

流程图LR
    id1((这是圆圈中的文本))

不对称形状的节点

流程图LR
    id1]这是框中的文本>

目前只可能上述形状,而不是其镜像。这可能会随着未来版本的发布而改变。

菱形节点

流程图LR
    id1{这是框中的文本}

六边形节点

流程图LR
    id1{{这是框中的文本}}

平行四边形

流程图TD
    id1[/这是框中的文本/]

平行四边形alt

流程图TD
    id1[\这是框中的文本\]

梯形

流程图TD
    A[/圣诞节\]

梯形alt

流程图TD
    B[\去购物/]

双圆圈

流程图TD
    id1((这是圆圈中的文本)))

Mermaid流程图中的扩展节点形状(v11.3.0+)

Mermaid引入了30种新形状,以增强流程图创建的灵活性和精确性。这些新形状提供了更多的选项来可视化表示流程图中的角色、决策、事件、数据存储等元素,提高清晰度和语义含义。

新形状定义的语法

Mermaid现在支持通用的语法来定义形状类型,以适应不断增加的形状数量。此语法允许您使用清晰灵活的格式为节点分配特定形状:

A@{ shape: rect }

这将在渲染时创建一个作为矩形的节点A。它与A["A"]A的渲染方式相同。

新形状的完整列表

以下是新引入的形状及其相应的语义含义、简称和别名的完整列表:

<!–@include: virtual:shapesTable -->

使用新形状的示例流程图

这是一个使用一些新引入的形状的示例流程图:

流程图RL
    A@{ shape: manual-file, label: "文件处理"}
    B@{ shape: manual-input, label: "用户输入"}
    C@{ shape: docs, label: "多个文档"}
    D@{ shape: procs, label: "流程自动化"}
    E@{ shape: paper-tape, label: "纸质记录"}

流程

流程图TD
    A@{ shape: rect, label: "这是一个流程" }

事件

流程图TD
    A@{ shape: rounded, label: "这是一个事件" }

终端点(体育场)

流程图TD
    A@{ shape: stadium, label: "终端点" }

子流程

流程图TD
    A@{ shape: subproc, label: "这是一个子流程" }

数据库(圆柱)

流程图TD
    A@{ shape: cyl, label: "数据库" }

开始(圆形)

流程图TD
    A@{ shape: circle, label: "开始" }

奇数

流程图TD
    A@{ shape: odd, label: "奇数形状" }

决策(菱形)

流程图TD
    A@{ shape: diamond, label: "决策" }

准备条件(六边形)

流程图TD
    A@{ shape: hex, label: "准备条件" }

数据输入/输出(右倾)

流程图TD
    A@{ shape: lean-r, label: "输入/输出" }

数据输入/输出(左倾)

流程图TD
    A@{ shape: lean-l, label: "输出/输入" }

优先操作(梯形底边)

流程图TD
    A@{ shape: trap-b, label: "优先操作" }

手动操作(梯形顶边)

流程图TD
    A@{ shape: trap-t, label: "手动操作" }

停止(双圆圈)

流程图TD
    A@{ shape: dbl-circ, label: "停止" }

文本块

流程图TD
    A@{ shape: text, label: "这是文本块" }

卡片(带凹槽的矩形)

流程图TD
    A@{ shape: notch-rect, label: "卡片" }

带线/阴影的流程

流程图TD
    A@{ shape: lin-rect, label: "带线流程" }

开始(小圆圈)

流程图TD
    A@{ shape: sm-circ, label: "小开始" }

停止(带框的圆圈)

流程图TD
    A@{ shape: framed-circle, label: "停止" }

分叉/合并(长矩形)

流程图TD
    A@{ shape: fork, label: "分叉或合并" }

整理(沙漏)

流程图TD
    A@{ shape: hourglass, label: "整理" }

注释(花括号)

流程图TD
    A@{ shape: comment, label: "注释" }

注释右侧(花括号右侧)

流程图TD
    A@{ shape: brace-r, label: "注释" }

注释两侧都有大括号

流程图TD
    A@{ shape: braces, label: "注释" }

通信链接(闪电)

流程图TD
    A@{ shape: bolt, label: "通信链接" }

文档

流程图TD
    A@{ shape: doc, label: "文档" }

延迟(半圆角矩形)

流程图TD
    A@{ shape: delay, label: "延迟" }

直接访问存储(水平圆柱)

流程图TD
    A@{ shape: das, label: "直接访问存储" }

磁盘存储(带线圆柱)

流程图TD
    A@{ shape: lin-cyl, label: "磁盘存储" }

显示(圆角梯形)

流程图TD
    A@{ shape: curv-trap, label: "显示" }

分割流程(分割矩形)

流程图TD
    A@{ shape: div-rect, label: "分割流程" }

提取(小三角形)

流程图TD
    A@{ shape: tri, label: "提取" }

内部存储(窗格)

流程图TD
    A@{ shape: win-pane, label: "内部存储" }

连接(实心圆)

流程图TD
    A@{ shape: f-circ, label: "连接" }

带线文档

流程图TD
    A@{ shape: lin-doc, label: "带线文档" }

循环限制(带凹槽的五边形)

流程图TD
    A@{ shape: notch-pent, label: "循环限制" }

手动文件(翻转三角形)

流程图TD
    A@{ shape: flip-tri, label: "手动文件" }

手动输入(倾斜矩形)

流程图TD
    A@{ shape: sl-rect, label: "手动输入" }

多文档(堆叠文档)

流程图TD
    A@{ shape: docs, label: "多个文档" }

多流程(堆叠矩形)

流程图TD
    A@{ shape: processes, label: "多个流程" }

纸带(旗帜)

流程图TD
    A@{ shape: flag, label: "纸带" }

存储数据(蝴蝶结矩形)

流程图TD
    A@{ shape: bow-rect, label: "存储数据" }

汇总(交叉圆)

流程图TD
    A@{ shape: cross-circ, label: "汇总" }

标记文档

流程图TD
    A@{ shape: tag-doc, label: "标记文档" }

标记流程(标记矩形)

流程图TD
    A@{ shape: tag-rect, label: "标记流程" }

Mermaid流程图中的特殊形状(v11.3.0+)

Mermaid还引入了2种特殊形状,以增强您的流程图:iconimage。这些形状允许您直接在流程图中包含图标和图像,提供更多的视觉上下文和清晰度。

图标形状

您可以使用icon形状在流程图中包含图标。要使用图标,您需要先注册图标包。按照添加自定义图标的说明进行操作。定义图标形状的语法如下:

流程图TD
    A@{ icon: "fa:user", form: "square", label: "用户图标", pos: "t", h: 60 }

参数

  • icon:来自注册图标包的图标名称。
  • form:指定图标的背景形状。如果没有定义,则图标将没有背景。选项包括:
    • square
    • circle
    • rounded
  • label:与图标关联的文本标签。这可以是任何字符串。如果没有定义,则不显示标签。
  • pos:标签的位置。如果没有定义,默认标签将位于图标底部。可能的值有:
    • t
    • b
  • h:图标的高度。如果没有定义,默认为48,这是最小值。

图像形状

您可以使用image形状在流程图中包含图像。定义图像形状的语法如下:

流程图TD
    A@{ img: "https://example.com/image.png", label: "图像标签", pos: "t", w: 60, h: 60, constraint: "off" }

参数

  • img:要显示的图像的URL。
  • label:与图像关联的文本标签。这可以是任何字符串。如果没有定义,则不显示标签。
  • pos:标签的位置。如果没有定义,默认标签将位于图像底部。可能的值有:
    • t
    • b
  • w:图像的宽度。如果没有定义,默认为图像的自然宽度。
  • h:图像的高度。如果没有定义,默认为图像的自然高度。
  • constraint:确定图像是否应限制节点大小。此设置还确保图像保持其原始纵横比,根据高度(h)调整宽度(w)。如果没有定义,默认为off。可能的值有:
    • on
    • off

如果您想调整图像大小,但保持相同的纵横比,请设置h,并设置constraint: on以限制纵横比。例如

流程图TD
  %% 我的图像具有受限的纵横比
  A@{ img: "https://mermaid.js.org/favicon.svg", label: "我的示例图像标签", pos: "t", h: 60, constraint: "on" }

节点之间的链接

节点可以通过链接/边连接。可以有不同类型的链接,或在链接上附加文本字符串。

带箭头头的链接

流程图LR
    A-->B

开放链接

流程图LR
    A --- B

链接上的文本

流程图LR
    A-- 这是文本! ---B

流程图LR
    A---|这是文本|B

带箭头头和文本的链接

流程图LR
    A-->|text|B

流程图LR
    A-- text -->B

点状链接

流程图LR
   A-.->B;

带文本的点状链接

流程图LR
   A-. text .-> B

粗链接

流程图LR
   A ==> B

带文本的粗链接

流程图LR
   A == text ==> B

隐形链接

这在某些情况下可能是一个有用的工具,其中您想要改变节点的默认位置。

流程图LR
    A ~~~ B

链接的链式

可以在同一行中声明多个链接,如下所示:

流程图LR
   A -- 文本 --> B -- text2 --> C

也可以在同一行中声明多个节点链接,如下所示:

流程图LR
   a --> b & c--> d

然后,您可以以非常富有表现力的方式描述依赖关系。像下面的一行代码:

流程图TB
    A & B--> C & D

如果您使用基本语法描述相同的图表,将需要四行。瑞典语lagom这个词浮现在脑海中。它的意思是,不多也不少。这也适用于富有表现力的语法。

流程图TB
    A --> C
    A --> D
    B --> C
    B --> D

给边附加ID

Mermaid现在支持给边附加ID,类似于可以给节点附加ID和元数据。这个特性为边的更高级样式、类和动画功能奠定了基础。

语法:

要给边一个ID,在边的语法前加上ID,后跟@字符。例如:

流程图LR
  A e1@--> B

在这个例子中,e1是连接AB的边的ID。然后您可以在后续定义或样式声明中使用这个ID,就像使用节点一样。

打开动画

一旦给边分配了ID,就可以通过定义边的属性来打开该边的动画:

流程图LR
  A e1@==> B
  e1@{ animate: true }

这告诉Mermaid边e1应该被动画化。

选择动画类型

在初始版本中,支持两种动画速度:fastslow。选择特定的动画类型等同于启用动画并一次性设置动画速度。

示例:

流程图LR
  A e1@--> B
  e1@{ animation: fast }

这等同于{ animate: true, animation: fast }

使用classDef语句进行动画

您也可以通过给它们分配一个类,然后定义一个classDef语句中的动画属性来给边添加动画。例如:

流程图LR
  A e1@--> B
  classDef animate stroke-dasharray: 9,5,stroke-dashoffset: 900,animation: dash 25s linear infinite;
  class e1 animate

在这个片段中:

  • e1@-->创建了一个ID为e1的边。
  • classDef animate定义了一个名为animate的类,具有样式和动画属性。
  • class e1 animateanimate类应用到边e1

关于转义逗号的注释: 当设置stroke-dasharray属性时,记得将逗号转义为\,,因为逗号在Mermaid的风格定义中用作分隔符。

新箭头类型

支持新类型的箭头:

  • 圆形边
  • 交叉边

圆形边示例

流程图LR
    A --o B

交叉边示例

流程图LR
    A --x B

多向箭头

可以使用方法向箭头。

流程图LR
    A o--o B
    B <--> C
    C x--x D

链接的最小长度

流程图中的每个节点最终被分配到渲染图中的一个等级,即垂直或水平级别(取决于流程图的方向),基于它链接到的节点。默认情况下,链接可以跨越任何数量的等级,但您可以通过在链接定义中添加额外的破折号来要求任何链接比其他链接更长。

在以下示例中,在节点_B_到节点_E的链接中添加了两个额外的破折号,使其跨越两个以上的等级:

流程图TD
    A[开始] --> B{是吗?}
    B -->|是| C[OK]
    C --> D[重新思考]
    D --> B
    B ---->|不| E[结束]

注意链接可能仍比请求的数量更长 由渲染引擎完成以适应其他请求。

当链接标签写在链接中间时,额外的破折号必须加在链接的右侧。以下示例等同于前一个:

流程图TD
    A[开始] --> B{是吗?}
    B -- 是 --> C[OK]
    C --> D[重新思考]
    D --> B
    B -- 不 ----> E[结束]

对于点状或粗链接,要添加的字符是等号或点,如下表所示:

长度 1 2 3
正常 --- ---- -----
正常带箭头 --> ---> ---->
粗体 === ==== =====
粗体带箭头 ==> ===> ====>
点状 -.- -..- -...-
点状带箭头 -.-> -..-> -...->

破坏语法的特殊字符

可以将文本放在引号内以呈现更麻烦的字符。如下例所示:

流程图LR
    id1["这是框中的(文本)"]

实体代码转义字符

可以使用示例中的风格转义字符。

    流程图LR
        A["A双引号:#quot;"] --> B["A十进制字符:#9829;"]

给出的数字是以10为基数的,所以#可以编码为#35;。也支持使用HTML字符名称。

子图

子图标题
    图定义
结束

下面是一个示例:

流程图TB
    c1-->a2
    子图 one
    a1-->a2
    结束
    子图 two
    b1-->b2
    结束
    子图 three
    c1-->c2
    结束

您也可以为子图设置显式ID。

流程图TB
    c1-->a2
    子图 ide1 [one]
    a1-->a2
    结束

流程图

使用流程图类型流程图,也可以将边设置为子图,如下所示。

流程图TB
    c1-->a2
    子图 one
    a1-->a2
    结束
    子图 two
    b1-->b2
    结束
    子图 three
    c1-->c2
    结束
    one --> two
    three --> two
    两个 --> c2

子图方向

使用流程图类型流程图,可以使用方向语句设置子图的渲染方向,如下例所示。

流程图LR
  子图 TOP
    方向 TB
    子图 B1
        方向 RL
        i1 -->f1
    结束
    子图 B2
        方向 BT
        i2 -->f2
    结束
  结束
  A --> TOP --> B
  B1 --> B2

限制

如果任何子图的节点链接到外部,子图方向将被忽略。相反,子图将继承父图的方向:

流程图LR
    子图 subgraph1
        方向 TB
        top1[top] --> bottom1[bottom]
    结束
    子图 subgraph2
        方向 TB
        top2[top] --> bottom2[bottom]
    结束
    %% ^ 这些子图是相同的,除了链接到它们的方式:

    %% 链接*到*子图1:子图1方向得以维持
    外部 --> subgraph1
    %% 链接*在*子图2中:
    %% 子图2继承顶层图(LR)的方向
    外部 ---> top2

Markdown字符串

“Markdown字符串”功能通过提供更多样化的字符串类型,增强了流程图和思维导图,支持文本格式化选项,如粗体和斜体,并自动包装标签中的文本。

---
配置:
  流程图:
    htmlLabels: false
---
流程图LR
子图 "One"
  a("`The **cat**
   in the hat`") -- "edge label" --> b{{"`The **dog** in the hog`"}}
结束
子图 "`**Two**`"
  c("`The **cat**
   in the hat`") -- "`Bold **edge label**`" --> d("The dog in the hog")
结束

格式化:

  • 要粗体文本,使用双星号(**)在文本前后。
  • 要斜体文本,使用单星号(*)在文本前后。
  • 使用传统字符串时,需要添加<br>标签以在节点中包装文本。然而,Markdown字符串在文本过长时自动包装文本,并允许您通过简单地使用换行符而不是<br>标签开始新一行。

这个功能适用于节点标签、边标签和子图标签。

自动包装可以通过使用

---
配置:
  markdownAutoWrap: false
---
图LR

禁用

交互

可以为节点绑定点击事件,点击可以导致JavaScript回调或链接打开在新浏览器标签页中。

当使用`securityLevel='strict'`时,此功能被禁用,当使用`securityLevel='loose'`时启用。
点击 nodeId 回调
点击 nodeId 调用 callback()
  • nodeId是节点的ID
  • callback是在显示图表的页面上定义的JavaScript函数,该函数将使用nodeId作为参数被调用。

以下是工具提示使用的示例:

<script>
  window.callback = function () {
    alert('A callback was triggered');
  };
</script>

工具提示文本被双引号包围。工具提示的样式由类.mermaidTooltip设置。

流程图LR
    A-->B
    B-->C
    C-->D
    点击 A 回调 "工具提示用于回调"
    点击 B "https://www.github.com" "这是链接的工具提示"
    点击 C 调用 callback() "工具提示用于回调"
    点击 D href "https://www.github.com" "这是链接的工具提示"

成功 工具提示功能和链接到URL的能力从版本0.5.2开始可用。

?> 由于Docsify处理JavaScript回调函数的限制,上述代码的替代工作演示可以在这个jsfiddle查看。

链接默认在相同的浏览器标签页/窗口中打开。可以通过添加链接目标到点击定义(支持_self_blank_parent_top)来更改这一点:

流程图LR
    A-->B
    B-->C
    C-->D
    D-->E
    点击 A "https://www.github.com" _blank
    点击 B "https://www.github.com" "在新标签页中打开这个" _blank
    点击 C href "https://www.github.com" _blank
    点击 D href "https://www.github.com" "在新标签页中打开这个" _blank

初学者提示 - 使用交互式链接的完整HTML上下文示例:

<body>
  <pre class="mermaid">
    流程图LR
        A-->B
        B-->C
        C-->D
        点击 A 回调 "工具提示"
        点击 B "https://www.github.com" "这是一个链接"
        点击 C 调用 callback() "工具提示"
        点击 D href "https://www.github.com" "这是一个链接"
  </pre>

  <script>
    window.callback = function () {
      alert('A callback was triggered');
    };
    const config = {
      startOnLoad: true,
      流程图: { useMaxWidth: true, htmlLabels: true, curve: 'cardinal' },
      安全等级:'宽松',
    };
    mermaid.initialize(config);
  </script>
</body>

注释

可以在流程图中输入注释,这些注释将被解析器忽略。注释需要在它们自己的行上,并且必须以%%(双百分号)开头。任何在注释开始到下一个新行的文本将被视为注释,包括任何流程语法

流程图LR
%% 这是一个注释 A -- 文本 --> B{节点}
   A -- 文本 --> B -- 文本2 --> C

样式和类

链接样式

可以对链接进行样式设计。例如,您可能想要对逆流程中的链接进行样式设计。由于链接没有像节点那样的ID,需要另一种方式来决定应该附加到哪些链接上的风格。 而不是ID,使用的是链接在图中定义的顺序号,或者使用默认值来应用于所有链接。在下面的示例中,链接样式语句中定义的风格将属于图中的第四个链接:

linkStyle 3 stroke:#ff3,stroke-width:4px,color:red;

也可以在单个语句中为多个链接添加样式,通过用逗号分隔链接号码:

linkStyle 1,2,7 color:blue;

线条曲线样式

可以对线条类型进行样式设计,如果默认方法不能满足您的需求。 可用的曲线风格包括basisbumpXbumpYcardinalcatmullRomlinearmonotoneXmonotoneYnaturalstepstepAfterstepBefore

有关可用曲线的完整列表,包括自定义曲线的解释,请参阅d3-shape项目中的Shapes文档。

线条样式可以通过两种方式实现:

  1. 更改所有线条的曲线风格
  2. 更改特定线条的曲线风格

图级别曲线风格

在这个例子中,一个从左到右的图表使用stepBefore曲线风格:

---
配置:
  流程图:
    curve: stepBefore
---
图LR

边级别曲线风格使用边ID(v11.10.0+)

可以给分配ID。分配ID后,可以使用以下语法修改边的curve属性来修改线条样式:

流程图LR
    A e1@==> B
    A e2@--> C
    e1@{ curve: linear }
    e2@{ curve: natural }
任何在边级别修改的边曲线风格都会覆盖图级别风格。
如果多次修改同一个边,则最后一个修改将被渲染。

节点样式

可以对节点应用特定样式,例如更粗的边框或不同的背景色。

流程图LR
    id1(开始)-->id2(停止)
    样式 id1 fill:#f9f,stroke:#333,stroke-width:4px
    样式 id2 fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5

更方便而不是每次定义样式,而是定义一个类样式,并将这个类附加到应该有不同外观的节点上。

一个类定义看起来像下面的例子:

    classDef className fill:#f9f,stroke:#333,stroke-width:4px;

也可以在一个语句中为多个类定义样式:

    classDef firstClassName,secondClassName font-size:12pt;

将类附加到节点的操作方法如下:

    class nodeId1 className;

也可以在一个语句中将类附加到一组节点:

    class nodeId1,nodeId2 className;

添加类的更短形式是使用:::操作符将类名附加到节点:

流程图LR
    A:::someclass --> B
    classDef someclass fill:#f96

当声明多个节点链接时,也可以使用这种形式:

流程图LR
    A:::foo & B:::bar --> C:::foobar
    classDef foo stroke:#f00
    classDef bar stroke:#0f0
    classDef foobar stroke:#00f

CSS类

还可以预定义可以在图表定义中应用的CSS类样式,如下例所示:

示例样式

<style>
  .cssClass > rect {
    fill: #ff0000;
    stroke: #ffff00;
    stroke-width: 4px;
  }
</style>

示例定义

流程图LR
    A-->B[AAA<span>BBB</span>]
    B-->D
    类 A cssClass

默认类

如果一个类被命名为default,它将被分配给没有特定类定义的所有类。

    classDef default fill:#f9f,stroke:#333,stroke-width:4px;

对fontawesome的基本支持

可以从fontawesome添加图标。

图标可以通过语法fa:#icon class name#访问。

流程图TD
    B["fa:fa-twitter 和平"]
    B-->C[fa:fa-ban 禁止]
    B-->D(fa:fa-spinner)
    B-->E(A fa:fa-camera-retro 也许?)

显示这些FontAwesome图标有两种方式:

注册FontAwesome图标包(v11.7.0+)

可以按照"注册图标包"指南注册自己的FontAwesome图标包。

支持的前缀:fafabfasfarfalfad

请注意,如果未注册FontAwesome包,将回退到FontAwesome CSS。

注册FontAwesome CSS

Mermaid支持FontAwesome,如果网站上包含了CSS。

Mermaid对可以使用的FontAwesome版本没有任何限制。

请参阅官方FontAwesome文档了解如何在您的网站上包含它。

添加此片段到<head>将添加对FontAwesome v6.5.1的支持

<link
  href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
  rel="stylesheet"
/>

自定义图标

可以使用Font Awesome提供的自定义图标,只要网站导入了相应的工具包。

请注意,这目前是一项付费功能来自Font Awesome。

对于自定义图标,您需要使用fak前缀。

示例

流程图TD
    B[fa:fa-twitter] %% 标准图标
    B-->E(fak:fa-custom-icon-name) %% 自定义图标

并尝试渲染它

流程图TD
    B["fa:fa-twitter 和平"]
    B-->C["fab:fa-truck-bold 一个自定义图标"]

图声明,节点和链接之间有空格,没有分号

  • 在图声明中,语句也可以不以分号结束。在0.2.16版本之后,以分号结束图声明是可选的。因此,下面的图声明与旧的图声明一样有效。

  • 允许在顶点和链接之间有一个空格。但是不应该在顶点和其文本之间以及链接和其文本之间有任何空格。旧的图声明语法也将工作,因此这个新特性是可选的,并且被引入以提高可读性。

以下是新的图边声明,也与旧的图边声明一样有效。

流程图LR
    A[硬边] -->|链接文本| B(圆边)
    B --> C{决策}
    C -->|一个| D[结果一]
    C -->|两个| E[结果二]

配置

渲染器

图表的布局由渲染器完成。默认渲染器是dagre。

从Mermaid版本9.4开始,您可以使用名为elk的备用渲染器。elk渲染器对更大和/或更复杂的图表更好。

_elk_渲染器是一个实验性功能。 您可以通过添加此指令将渲染器更改为elk:

配置:
  流程图:
    defaultRenderer: "elk"
请注意,网站需要使用Mermaid版本9.4+才能正常工作,并在此功能启用的延迟加载配置中。

宽度

可以调整渲染流程图的宽度。

这是通过定义mermaid.flowchartConfig或通过CLI使用JSON文件配置来完成的。如何在mermaidCLI页面中描述了如何使用CLI。 mermaid.flowchartConfig可以设置为带有配置参数的JSON字符串或相应的对象。

mermaid.flowchartConfig = {
    width: 100%
}

<!— cspell:ignore lagom —>