mermaid流程圖語法介紹

流程圖 - 基本語法

所有流程圖都由節(jié)點、幾何形狀和邊緣碴裙、箭頭或線條組成心软。代碼圖定義了這些節(jié)點的制作和交互方式叠穆。

它還可以容納不同的箭頭類型、多向箭頭以及與子圖的鏈接愿棋。

重要提示:請勿將“end”一詞鍵入為流程圖節(jié)點。將所有或任何一個字母大寫以防止流程圖中斷,即“End”或“END”西剥。

一個節(jié)點(默認)

flowchart?LR

????id

id

注意id 是框中顯示的內(nèi)容。

帶文本的節(jié)點

也可以在不同于 id 的框中設置文本亿汞。如果多次這樣做瞭空,它將是為將使用的節(jié)點找到的最后一個文本。此外疗我,如果您稍后為節(jié)點定義邊咆畏,則可以省略文本定義。渲染框時將使用先前定義的那個吴裤。

flowchart?LR

????id1[This?is?the?text?in?the?box]

This is the text in the box

圖形

該語句聲明了流程圖的方向旧找。

這聲明流程圖從上到下(TD或TB)定向。

flowchart?TD

????Start?-->?Stop

StartStop

這表明流程圖是從左到右的(LR)嚼摩。

flowchart?LR

????Start?-->?Stop

StartStop

流程圖方向

可能的流程圖方向是:

TB - 從上到下

TD - 自上而下/與自上而下相同

BT - 自下而上

RL - 從右到左

LR——從左到右

節(jié)點形狀

具有圓邊的節(jié)點

flowchart?LR

????id1(This?is?the?text?in?the?box)

This is the text in the box

體育場形狀的節(jié)點

flowchart?LR

????id1([This?is?the?text?in?the?box])

This is the text in the box

子程序形狀中的節(jié)點

flowchart?LR

????id1[[This?is?the?text?in?the?box]]

This is the text in the box

圓柱形節(jié)點

flowchart?LR

????id1[(Database)]

Database

圓形節(jié)點

flowchart?LR

????id1((This?is?the?text?in?the?circle))

This is the text in the circle

不對稱形狀的節(jié)點

flowchart?LR

????id1>This?is?the?text?in?the?box]

This is the text in the box

目前只有上面的形狀是可能的钦讳,而不是它的鏡子。這可能會隨著未來的版本而改變枕面。

一個節(jié)點(菱形)

flowchart?LR

????id1{This?is?the?text?in?the?box}

This is the text in the box

六邊形節(jié)點

flowchart?LR

????id1{{This?is?the?text?in?the?box}}

This is the text in the box

平行四邊形

flowchart?TD

????id1[/This?is?the?text?in?the?box/]

This is the text in the box

平行四邊形替代

flowchart?TD

????id1[\This?is?the?text?in?the?box\]

This is the text in the box

梯形

flowchart?TD

????A[/Christmas\]

Christmas

梯形 alt

flowchart?TD

????B[\Go?shopping/]

Go shopping

雙圈

flowchart?TD

????id1(((This?is?the?text?in?the?circle)))

This is the text in the circle

節(jié)點之間的鏈接

節(jié)點可以與鏈接/邊連接愿卒。可以有不同類型的鏈接或將文本字符串附加到鏈接潮秘。

帶箭頭的鏈接

flowchart?LR

????A-->B

AB

一個開放的鏈接

flowchart?LR

????A?---?B

AB

鏈接上的文字

flowchart?LR

????A--?This?is?the?text!?---B

This is the text!AB

或者

flowchart?LR

????A---|This?is?the?text|B

This is the textAB

帶有箭頭和文本的鏈接

flowchart?LR

????A-->|text|B

textAB

或者

flowchart?LR

????A--?text?-->B

textAB

虛線鏈接

flowchart?LR;

???A-.->B;

AB

帶文本的虛線鏈接

flowchart?LR

???A-.?text?.->?B

textAB

厚鏈接

flowchart?LR

???A?==>?B

AB

帶文本的粗鏈接

flowchart?LR

???A?==?text?==>?B

textAB

鏈接的鏈接

可以在同一行中聲明許多鏈接琼开,如下所示:

flowchart?LR

???A?--?text?-->?B?--?text2?-->?C

texttext2ABC

也可以在同一行中聲明多個節(jié)點鏈接,如下所示:

flowchart?LR

???a?-->?b?&?c-->?d

abcd

然后枕荞,您可以以非常有表現(xiàn)力的方式描述依賴關系柜候。就像下面的單線:

flowchart?TB

????A?&?B-->?C?&?D

ABCD

如果您使用基本語法描述相同的圖表,則需要四行躏精。警告一句渣刷,這可能會使流程圖更難以降價形式閱讀。瑞典詞lagom浮現(xiàn)在腦海矗烛。這意味著辅柴,不要太多也不要太少。這也適用于表達性語法瞭吃。

flowchart?TB

????A?-->?C

????A?-->?D

????B?-->?C

????B?-->?D

新的箭頭類型

支持以下新類型的箭頭:

flowchart?LR

????A?--o?B

????B?--x?C

ABC

多向箭頭

可以使用多向箭頭碌嘀。

flowchart?LR

????A?o--o?B

????B?<-->?C

????C?x--x?D

ABCD

鏈接的最小長度

流程圖中的每個節(jié)點最終都根據(jù)其鏈接到的節(jié)點被分配到渲染圖中的等級,即垂直或水平級別(取決于流程圖方向)歪架。默認情況下股冗,鏈接可以跨越任意數(shù)量的等級,但您可以通過在鏈接定義中添加額外的破折號來要求任何鏈接比其他鏈接更長和蚪。

在以下示例中止状,在從節(jié)點B?到節(jié)點E的鏈接中添加了兩個額外的破折號烹棉,因此它比常規(guī)鏈接多兩個等級:

flowchart?TD

????A[Start]?-->?B{Is?it?}

????B?-->|Yes|?C[OK]

????C?-->?D[Rethink]

????D?-->?B

????B?---->|No|?E[End]

YesNoStartIs it?OKRethinkEnd

注意鏈接可能仍會比渲染引擎請求的等級數(shù)更長,以適應其他請求怯疤。

當鏈接標簽寫在鏈接中間時峦耘,額外的破折號必須添加在鏈接的右側。以下示例與上一個示例等效:

flowchart?TD

????A[Start]?-->?B{Is?it?}

????B?--?Yes?-->?C[OK]

????C?-->?D[Rethink]

????D?-->?B

????B?--?No?---->?E[End]

YesNoStartIs it?OKRethinkEnd

對于點鏈接或粗鏈接旅薄,要添加的字符是等號或點,如下表所示:

長度123

普通的------------

正常帶箭頭-->--->---->

厚的============

粗帶箭頭==>===>====>

點綴-.--..--...-

點綴箭頭-.->-..->-...->

破壞語法的特殊字符

可以將文本放在引號內(nèi)以呈現(xiàn)更麻煩的字符泣崩。如下例所示:

flowchart?LR

????id1["This?is?the?(text)?in?the?box"]

This is the (text) in the box

用于轉義字符的實體代碼

可以使用此處示例的語法來轉義字符少梁。

????flowchart?LR

????????A["A?double?quote:#quot;"]?-->B["A?dec?char:#9829;"]

A double quote:"A dec char:?

給出的數(shù)字以 10 為底,因此#可以編碼為#35;.?還支持使用 HTML 字符名稱矫付。

子圖

subgraph title

? ? graph definition

end

下面的一個例子:

flowchart?TB

????c1-->a2

????subgraph?one

????a1-->a2

????end

????subgraph?two

????b1-->b2

????end

????subgraph?three

????c1-->c2

????end

threeonec2c1twob2b1a2a1

您還可以為子圖設置顯式 id凯沪。

flowchart?TB

????c1-->a2

????subgraph?ide1?[one]

????a1-->a2

????end

onea2a1c1

流程圖

使用 graphtype 流程圖,還可以設置與子圖之間的邊买优,如下面的流程圖所示妨马。

flowchart?TB

????c1-->a2

????subgraph?one

????a1-->a2

????end

????subgraph?two

????b1-->b2

????end

????subgraph?three

????c1-->c2

????end

????one?-->?two

????three?-->?two

????two?-->?c2

threeonec2c1twob2b1a2a1

子圖中的方向

使用 graphtype 流程圖,您可以使用方向語句來設置子圖將呈現(xiàn)的方向杀赢,如本例所示烘跺。

flowchart?LR

??subgraph?TOP

????direction?TB

????subgraph?B1

????????direction?RL

????????i1?-->f1

????end

????subgraph?B2

????????direction?BT

????????i2?-->f2

????end

??end

??A?-->?TOP?-->?B

??B1?-->?B2

TOPB1f1i1B2f2i2AB

相互作用

可以將單擊事件綁定到節(jié)點,單擊可以導致 javascript 回調(diào)或將在新瀏覽器選項卡中打開的鏈接脂崔。注意:此功能在使用時禁用滤淳,在使用時securityLevel='strict'啟用securityLevel='loose'。

click nodeId callback

click nodeId call callback()

nodeId 是節(jié)點的id

callback 是在顯示圖形的頁面上定義的 javascript 函數(shù)的名稱砌左,該函數(shù)將以 nodeId 作為參數(shù)被調(diào)用脖咐。

下面的工具提示用法示例:

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

工具提示文本用雙引號括起來。工具提示的樣式由類設置.mermaidTooltip汇歹。

flowchart?LR

????A-->B

????B-->C

????C-->D

????click?A?callback?"Tooltip?for?a?callback"

????click?B?"https://www.github.com"?"This?is?a?tooltip?for?a?link"

????click?A?call?callback()?"Tooltip?for?a?callback"

????click?B?href?"https://www.github.com"?"This?is?a?tooltip?for?a?link"

ABCD

默認情況下屁擅,鏈接在同一瀏覽器選項卡/窗口中打開〔可以通過將鏈接目標添加到點擊定義來更改此設置(支持_self,_blank和):_parent_top

flowchart?LR

????A-->B

????B-->C

????C-->D

????D-->E

????click?A?"https://www.github.com"?_blank

????click?B?"https://www.github.com"?"Open?this?in?a?new?tab"?_blank

????click?C?href?"https://www.github.com"?_blank

????click?D?href?"https://www.github.com"?"Open?this?in?a?new?tab"?_blank

ABCDE

初學者提示——在 html 上下文中使用交互式鏈接的完整示例:

<body><divclass="mermaid">flowchart LR? ? ? ? A-->B? ? ? ? B-->C? ? ? ? C-->D? ? ? ? click A callback "Tooltip"? ? ? ? click B "https://www.github.com" "This is a link"? ? ? ? click C call callback() "Tooltip"? ? ? ? click D href "https://www.github.com" "This is a link"</div><script>varcallback=function(){alert('A callback was triggered');};varconfig={startOnLoad:true,flowchart:{useMaxWidth:true,htmlLabels:true,curve:'cardinal'},securityLevel:'loose'};mermaid.initialize(config);</script></body>

注釋

可以在流程圖中輸入注釋派歌,解析器將忽略這些注釋。注釋需要單獨一行取视,并且必須以%%(雙百分號)開頭硝皂。注釋開始后到下一個換行符的任何文本都將被視為注釋,包括任何流語法

flowchart?LR

%%?this?is?a?comment?A?--?text?-->?B{node}

???A?--?text?-->?B?--?text2?-->?C

造型和課程

樣式鏈接

可以設置鏈接樣式作谭。例如稽物,您可能想要對流中向后的鏈接進行樣式設置。由于鏈接沒有與節(jié)點相同的 id折欠,因此需要其他方式來確定鏈接應附加到哪種樣式贝或。使用圖表中定義鏈接時的順序號代替 ids吼过,或使用默認值應用于所有鏈接。在下面的示例中咪奖,linkStyle 語句中定義的樣式將屬于圖中的第四個鏈接:

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

造型線曲線

如果默認方法不能滿足您的需要盗忱,則可以設置用于項目之間線條的曲線類型⊙蛘裕可用的曲線樣式包括basis趟佃、bump、linear昧捷、monotoneX闲昭、monotoneY、natural靡挥、step序矩、stepAfter和stepBefore。

在此示例中跋破,從左到右的圖形使用stepBefore曲線樣式:

%%{ init: { 'flowchart': { 'curve': 'stepBefore' } } }%%

graph LR

有關可用曲線的完整列表簸淀,包括自定義曲線的說明,請參閱d3-shape項目中的Shapes文檔 毒返。

樣式化節(jié)點

可以對節(jié)點應用特定樣式租幕,例如較粗的邊框或不同的背景顏色。

flowchart?LR

????id1(Start)-->id2(Stop)

????style?id1?fill:#f9f,stroke:#333,stroke-width:4px

????style?id2?fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray:?5?5

StartStop

課程

比每次都定義樣式更方便的是定義一個樣式類拧簸,并將該類附加到應該具有不同外觀的節(jié)點上令蛉。

類定義如下例所示:

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

將類附加到節(jié)點按以下方式完成:

? ? class nodeId1 className;

也可以在一個語句中將一個類附加到節(jié)點列表:

? ? class nodeId1,nodeId2 className;

添加類的更短形式是使用運算符將類名附加到節(jié)點:::,如下所示:

flowchart?LR

????A:::someclass?-->?B

????classDef?someclass?fill:#f96;

AB

CSS類

也可以在 css 樣式中預定義可以從圖形定義中應用的類狡恬,如下例所示:

示例樣式

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

示例定義

flowchart?LR;

????A-->B[AAA<span>BBB</span>]

????B-->D

????class?A?cssClass

AAAABBBD

默認類

如果一個類被命名為 default 珠叔,它將被分配給所有沒有特定類定義的類。

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

對 fontawesome 的基本支持

可以從 fontawesome 添加圖標弟劲。

圖標通過語法 fa:#icon class name# 訪問祷安。

flowchart?TD

????B["fab:fa-twitter?for?peace"]

????B-->C[fa:fa-ban?forbidden]

????B-->D(fa:fa-spinner);

????B-->E(A?fa:fa-camera-retro?perhaps?)

?for peace?forbiddenA??perhaps?

Code Chart 現(xiàn)在僅與 Font Awesome 版本 4、5 和 6 兼容兔乞。檢查您使用的 Font Awesome 版本是否正確汇鞭。

頂點和鏈接之間有空格且不帶分號的圖形聲明

在圖形聲明中,語句現(xiàn)在也可以不用分號結束庸追。在 0.2.16 版本之后霍骄,以分號結束圖形語句只是可選的。因此淡溯,下面的圖形聲明與圖形的舊聲明一起也是有效的读整。

頂點和鏈接之間允許有一個空格。但是咱娶,頂點及其文本與鏈接及其文本之間不應有任何空格米间。圖形聲明的舊語法也可以使用强品,因此這個新特性是可選的,并被引入以提高可讀性屈糊。

下面是圖邊的新聲明的榛,它與圖邊的舊聲明一樣有效。

flowchart?LR

????A[Hard?edge]?-->|Link?text|?B(Round?edge)

????B?-->?C{Decision}

????C?-->|One|?D[Result?one]

????C?-->|Two|?E[Result?two]

Link textOneTwoHard edgeRound edgeDecisionResult oneResult two

配置...

是否可以調(diào)整渲染流程圖的寬度逻锐。

這是通過定義mermaid.flowchartConfig來完成的夫晌。

mermaid.flowchartConfig={width:100%}

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市昧诱,隨后出現(xiàn)的幾起案子慷丽,更是在濱河造成了極大的恐慌,老刑警劉巖鳄哭,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異纲熏,居然都是意外死亡妆丘,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門局劲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來勺拣,“玉大人,你說我怎么就攤上這事鱼填∫┯校” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵苹丸,是天一觀的道長愤惰。 經(jīng)常有香客問我,道長赘理,這世上最難降的妖魔是什么宦言? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮商模,結果婚禮上奠旺,老公的妹妹穿的比我還像新娘。我一直安慰自己施流,他們只是感情好响疚,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瞪醋,像睡著了一般忿晕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上银受,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天杏糙,我揣著相機與錄音慎王,去河邊找鬼。 笑死宏侍,一個胖子當著我的面吹牛赖淤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谅河,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼咱旱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了绷耍?” 一聲冷哼從身側響起吐限,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎褂始,沒想到半個月后诸典,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡崎苗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年狐粱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胆数。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡肌蜻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出必尼,到底是詐尸還是另有隱情蒋搜,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布判莉,位于F島的核電站豆挽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏券盅。R本人自食惡果不足惜祷杈,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望渗饮。 院中可真熱鬧但汞,春花似錦、人聲如沸互站。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胡桃。三九已至踩叭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背容贝。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工自脯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人斤富。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓膏潮,卻偏偏與公主長得像,于是被迫代替她去往敵國和親满力。 傳聞我的和親對象是個殘疾皇子焕参,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容