流程图语法Mermaid教程

news2024/11/26 4:53:50

在使用Markdown来编写博客的过程中,尤其是需要更醒目的逻辑说明时,就需要使用流程图
既然CSDN官方推荐Mermaid作为流程图语法,那我也针对Mermaid来做一期教程。

在学习之前,先总结一下流程图的需求:

  1. 节点设置
  2. 方向设置
  3. 连线设置
  4. 子图设置
  5. 节点绑定事件

其次,需要解释一下Mermaid语法Markdown语法中的插入方法
CSDN给出了两种插入方式,分别是graphflowchart:
在这里插入图片描述
在这里插入图片描述

即使用这个方法:

```mermaid

graph  流程图方向
	流程图节点
	
删除这六个字```

```mermaid

flowchart  流程图方向
	流程图节点
	
删除这六个字```

因为Mermaid语法代码片的限制,代码一旦写出就会变成流程图,所以在拷贝代码时需要把删除这六个字删掉。

一般来说flowchart要比graph更智能一些,但相应的,graphflowchart更容易编写,更适合简单的流程图。
本文着重介绍graph,一些graph无法实现的功能再考虑flowchart

那么开始教程。

流程图语法Mermaid教程

  • 一、节点设置
    • 1、普通节点
    • 2、带ID的节点
    • 3、不同形状的节点
      • 带圆角的节点
      • 椭圆形状的节点
      • 子程序形状中的节点
      • 圆柱形节点
      • 一个圆形的节点
      • 形状不对称的节点
      • 节点(菱形)
      • 六边形节点
      • 平行四边形
      • 平行四边形镜像
      • 正梯形
      • 倒梯形
    • 4、 高度自定义的节点
  • 二、方向设置
    • 1、从上到下
    • 2、自上而下
    • 3、从下到上
    • 4、从右到左
    • 5、从左到右
  • 三、连线设置
    • 1、连线类型
      • 带箭头的连线
      • 没有箭头的连线
      • 带文本的连线
      • 带箭头和文本的连线
      • 虚线连线
      • 带文本的虚线连线
      • 加粗连线
      • 带文本的粗连线
      • 多节点连线
    • 2、箭头类型(flowchart)
      • 普通箭头
      • 双向箭头
      • 圆边箭头
      • 双向圆边箭头
      • 交叉箭头
      • 双向交叉箭头
    • 3、长度类型
  • 四、子图设置
    • 1、三区域举例
    • 2、两区域与飞点举例
    • 3、三区域互联举例
    • 4、区域嵌套
  • 五、节点绑定事件

一、节点设置

1、普通节点

只需要输入节点内容即可,此时节点内容就是ID

注意:ID无法包含空格回车等一些特殊符号

第一个节点
```mermaid

graph
	第一个节点
	
删除这六个字```

2、带ID的节点

使用中括号[ ]将内容括起来

第一个节点
```mermaid

graph
	节点ID[第一个节点]
	
删除这六个字```
第一个节点
来个回车
```mermaid

graph
	节点ID[第一个节点<br>来个回车]
	
删除这六个字```

3、不同形状的节点

带圆角的节点

This is the text in the box
```mermaid

graph
    id1(This is the text in the box)
	
删除这六个字```

椭圆形状的节点

This is the text in the box
```mermaid

graph
    id1([This is the text in the box])
	
删除这六个字```

子程序形状中的节点

This is the text in the box
```mermaid

graph
    id1[[This is the text in the box]]
	
删除这六个字```

圆柱形节点

Database
```mermaid

graph
    id1[(Database)]
	
删除这六个字```

一个圆形的节点

第一个节点
```mermaid

graph
    id1((第一个节点))
	
删除这六个字```

形状不对称的节点

This is the text in the box
```mermaid

graph
    id1>This is the text in the box]
	
删除这六个字```

节点(菱形)

This is the text in the box
```mermaid

graph
    id1{This is the text in the box}
	
删除这六个字```

六边形节点

This is the text in the box
```mermaid

graph
    id1{{This is the text in the box}}
	
删除这六个字```

平行四边形

This is the text in the box
```mermaid

graph
    id1[/This is the text in the box/]
	
删除这六个字```

平行四边形镜像

This is the text in the box
```mermaid

graph
    id1[\This is the text in the box\]
	
删除这六个字```

正梯形

Christmas
```mermaid

graph
    A[/Christmas\]
	
删除这六个字```

倒梯形

Go shopping
```mermaid

graph
    B[\Go shopping/]
	
删除这六个字```

4、 高度自定义的节点

各种各样的花里胡哨的,这里不做解释了

Start
Stop
```mermaid

graph
    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
	
删除这六个字```

二、方向设置

代码方向
TB从上到下
TD自上而下/与自上而下相同
BT从下到上
RL右到左
LR左到右

1、从上到下

第一个节点
第二个节点
```mermaid

graph TB
    第一个节点 --> 第二个节点
	
删除这六个字```

2、自上而下

第一个节点
第二个节点
```mermaid

graph TD
    第一个节点 --> 第二个节点
	
删除这六个字```

3、从下到上

第一个节点
第二个节点
```mermaid

graph BT
    第一个节点 --> 第二个节点
	
删除这六个字```

4、从右到左

第一个节点
第二个节点
```mermaid

graph RL
    第一个节点 --> 第二个节点
	
删除这六个字```

5、从左到右

第一个节点
第二个节点
```mermaid

graph LR
    第一个节点 --> 第二个节点
	
删除这六个字```

三、连线设置

1、连线类型

带箭头的连线

A
B
```mermaid

graph LR
    A-->B
	
删除这六个字```

没有箭头的连线

A
B
```mermaid

graph LR
    A --- B
	
删除这六个字```

带文本的连线

This is the text!
A
B
```mermaid

graph LR
    A-- This is the text! ---B
	
删除这六个字```

或者

This is the text
A
B
```mermaid

graph LR
    A---|This is the text|B
	
删除这六个字```

带箭头和文本的连线

text
A
B
```mermaid

graph LR
    A-->|text|B
	
删除这六个字```

或者

text
A
B
```mermaid

graph LR
    A-- text -->B
	
删除这六个字```

虚线连线

A
B
```mermaid

graph LR
   A-.->B;
	
删除这六个字```

带文本的虚线连线

text
A
B
```mermaid

graph LR
   A-. text .-> B
	
删除这六个字```

加粗连线

A
B
```mermaid

graph LR
   A ==> B
	
删除这六个字```

带文本的粗连线

text
A
B
```mermaid

graph LR
   A == text ==> B
	
删除这六个字```

多节点连线

可以在同一行中声明多个连线

text
text2
A
B
C
```mermaid

graph LR
   A -- text --> B -- text2 --> C
	
删除这六个字```

也可以换行写

text
text2
A
B
C
```mermaid

graph LR
   A 
   -- text --> B 
   -- text2 --> C
	
删除这六个字```

还可以在同一行中声明多个节点连线

a
b
c
d
```mermaid

graph LR
   a --> b & c--> d
	
删除这六个字```

玩的花一点

A
B
C
D
```mermaid

graph LR
    A & B--> C & D
	
删除这六个字```

如果使用基本语法描述同一个图,则需要四行。

A
C
D
B
```mermaid

graph LR
    A --> C
    A --> D
    B --> C
    B --> D
	
删除这六个字```

2、箭头类型(flowchart)

由于graph好像无法修改箭头类型,我们这里用flowchart代替

普通箭头

A
B
```mermaid

flowchart LR
    A-->B
	
删除这六个字```

双向箭头

A
B
```mermaid

flowchart LR
    A<-->B
	
删除这六个字```

圆边箭头

A
B
```mermaid

flowchart LR
    A --o B
	
删除这六个字```

双向圆边箭头

A
B
```mermaid

flowchart LR
    A o--o B
	
删除这六个字```

交叉箭头

A
B
```mermaid

flowchart LR
    A --x B
	
删除这六个字```

双向交叉箭头

A
B
```mermaid

flowchart LR
    A x--x B
	
删除这六个字```

3、长度类型

长度123
无箭头---------
普通箭头–>—>---->
加粗============
加粗粗带箭头==>===>====>
虚线-.--…-
(两个点)
-…-
带箭头的虚线-.->-…->-…->

四、子图设置

子图其实就是设区域,主要使用方法如下:
title可以随便设

subgraph title
    节点代码
end

1、三区域举例

three
two
one
c2
c1
b2
b1
a2
a1
```mermaid

graph
    graph
	 c1-->a2
    subgraph one
    a1-->a2
    end
    subgraph two
    b1-->b2
    end
    subgraph three
    c1-->c2
    end
	
删除这六个字```

但个人觉得graph没有flowchart智能

three
one
c2
c1
two
b2
b1
a2
a1
```mermaid

flowchart
    graph
	 c1-->a2
    subgraph one
    a1-->a2
    end
    subgraph two
    b1-->b2
    end
    subgraph three
    c1-->c2
    end
	
删除这六个字```

2、两区域与飞点举例

先看graph版本

one
a2
a1
c1
```mermaid

graph
    c1-->a2
    subgraph ide1 [one]
    a1-->a2
    end
	
删除这六个字```

再看flowchart版本

one
a2
a1
c1
```mermaid

flowchart
    c1-->a2
    subgraph ide1 [one]
    a1-->a2
    end
	
删除这六个字```

此处倒没什么区别

3、三区域互联举例

graph版本好像无法区域互联。

试试flowchart版本

three
one
c2
c1
two
b2
b1
a2
a1
```mermaid

flowchart 
    c1-->a2
    subgraph one
    a1-->a2
    end
    subgraph two
    b1-->b2
    end
    subgraph three
    c1-->c2
    end
    one --> two
    three --> two
    two --> c2
	
删除这六个字```

4、区域嵌套

graph版本只能区域嵌套,无法区域互联。

TOP
B1
B2
f2
i2
f1
i1
```mermaid

flowchart LR
  subgraph TOP
    direction TB
    subgraph B1
        direction RL
        i1 -->f1
    end
    subgraph B2
        direction BT
        i2 -->f2
    end
  end
	
删除这六个字```

再看flowchart版本

TOP
B1
f1
i1
B2
f2
i2
A
B
```mermaid

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

	
删除这六个字```

五、节点绑定事件

可以将单击事件绑定到节点,单击可以打开链接。

默认情况下,链接在同一浏览器选项卡/窗口中打开。可以通过向点击定义添加链接目标来更改此设置(支持 _self_blank_parent 和 _top):
先试试graph

self
blank
parent
top
打酱油
```mermaid

graph LR
    self-->blank
    blank-->parent
    parent-->top
    top-->打酱油
    click self "https://yubing.blog.csdn.net/" _self
    click blank "https://yubing.blog.csdn.net/" _blank
    click parent href "https://yubing.blog.csdn.net/" _parent
    click top href "https://yubing.blog.csdn.net/" _top
	
删除这六个字```

再试试flowchart:

self
blank
parent
top
打酱油
```mermaid

flowchart LR
    self-->blank
    blank-->parent
    parent-->top
    top-->打酱油
    click self "https://yubing.blog.csdn.net/" _self
    click blank "https://yubing.blog.csdn.net/" _blank
    click parent href "https://yubing.blog.csdn.net/" _parent
    click top href "https://yubing.blog.csdn.net/" _top
	
删除这六个字```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2035637.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

好看的超清4K视频素材去哪里找?下载素材资源网站分享

在当前高清与4K视频素材盛行的时代&#xff0c;创作出色的视频内容离不开优质的超清4K视频素材。以下是一些宝藏网站&#xff0c;它们提供了丰富的4K视频素材&#xff0c;可以使您的视频创作更加引人注目。 蛙学网 蛙学网是获取高质量4K视频素材的首选之地。该网站详细标注了视…

lvs、集群

1.集群和分布式 当多个用户当用户访问一个服务器时&#xff0c;服务器server1可能就会崩&#xff0c;假如这时候我们新加一个服务器server2来缓解server1的压力&#xff0c;那么就需要一个调度器lvs来分配&#xff0c;所以现在就是用户的访问就需要通过调度器之后到达服务器&a…

期望薪资3k,面试官笑了但没说话

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…

Linux系统编程(8)进程进阶

一、进程的执行 子进程被创建好后&#xff0c;就需要去执行它所该执行的功能&#xff0c;根据子进程需要做的事&#xff0c;将其分为两类&#xff1a; 1.子进程所做的事与父进程差不多&#xff0c;两者功能几乎一样 //子承父业 2.子进程所做的事和父进程做的事完全不同&…

随手记录第十四话 -- 在 Spring Boot 3.2.3 中使用 springdoc-openapi-starter-webmvc-ui

项目升级到JDK21后&#xff0c;SpringBoot版本也到了3.2.3&#xff0c;之前的Swagger-ui不在支持了&#xff0c;找了其他的一直忘记记录了&#xff0c;这里记录一下。 快捷目录 1.引言2.添加依赖3.配置类4.Java代码实现5.启动应用6.总结 1.引言 随着 Spring Boot 版本的更新&a…

一个C++模板有意思的小实验

看面经遇到一个C模板的问题&#xff0c;顺手做了下实验看看结果&#xff0c;觉得比较有意思就记录一下 我们一般用模板会把声明和定义放在一起(放在同一个头文件内)&#xff0c;那么如果我们在一个头文件内声明我们要使用的模板函数&#xff0c;并在另一个cpp文件内实现会怎么样…

HarmonyOS NEXT星河版零基础入门(2)

1.Scroll滚动容器-核心用法 1&#xff08;1&#xff09;.Scroll的核心用法 快速得到一个长度为5的数组 Array.from({length:5}) 代码&#xff1a; 这种是默认是竖向的 要是想要实现横向的 就得把Scroll里边的Column改为Row组件 并且把scrolllable设置为Horizontal横向 1&a…

Spring AI 更新:支持OpenAI的结构化输出,增强对JSON响应的支持

就在昨晚&#xff0c;Spring AI发了个比较重要的更新。由于最近OpenAI推出了结构化输出的功能&#xff0c;可确保 AI 生成的响应严格遵守预定义的 JSON 模式。此功能显着提高了人工智能生成内容在现实应用中的可靠性和可用性。Spring AI 紧随其后&#xff0c;现在也可以对OpenA…

如何在萤石云视频app转移设备

本文将详述如何在萤石云视频app转移设备 一&#xff0e; 注意事项 1. 若设备正在分享中,无法转移 2. 若设备已开通云存储等可以转移的增值服务&#xff0c;相应的服务也会转移&#xff1b;若开通了订阅服务将取消订阅服务&#xff0c;次月不再扣费续订 3. 转移设备时若设备…

【iOS】—— Runloop和多线程问题总结

Runloop和多线程问题总结 runloop总结1. runloop简介2. runloop的基本作用3. 获取runloop的流程4. runloop和线程的关系5. runloop中的Mode有几种以及作用6.runloop的事件源7. 讲一下source0和source18. runloop的六种观察者模式9. 针对定时器在滑动时停止工作的问题10. 如何解…

【pytorch学习】transforms的使用

1 ToTensor() 作用&#xff1a;将 PIL Image 类型或者 numpy.ndarray 类型转为 tensor 类型 实例&#xff1a; from torchvision import transforms from PIL import Imageimg_path "data/train/bees/17209602_fe5a5a746f.jpg" img Image.open(img_path)print(i…

[数据结构]-快速排序

学习快排的基础 不想自己推导时间复杂度或者了解随机化的合理性,可以忽视下面这一条. 推导时间复杂度的方法:主定理随机化算法—数学基础:概率统计 QuickSort 快速排序: 1962年,Tony Hoare发明了这种如此高效实用的强大排序算法 分治法的体现:Divide and Conquer原地排序,…

数据结构+二叉遍历算法的应用

一、问题描述 编写一个程序&#xff0c;先用二叉树表示一个简单算术表达式&#xff0c;树的每一个 结点包括一个运算符或运算数。在简单算术表达式中只包含、-、 *、/和一位正整数且格式正确(不包含括号)&#xff0c;并且要按照先乘除后 加减的原则构造二叉树。如图 7.35 所示…

QT5生成独立运行的exe文件

目录 1 生成独立运行的exe文件1.1 设置工程Release版本可执行文件存储路径1.2 将工程编译成Release版本 2 使用QT5自带的windeployqt拷贝软件运行依赖项3 将程序打包成一个独立的可执行软件exe4 解决QT5 This application failed to start because no Qt platform plugin could…

批量快递中问题件筛选技巧大揭秘

批量快递中问题件筛选技巧大揭秘&#xff1a;固乔快递查询助手的强大功能 在电商行业日益繁荣的今天&#xff0c;快递服务成为了连接商家与消费者的关键纽带。然而&#xff0c;随着订单量的激增&#xff0c;如何高效处理并筛选出快递中的问题件&#xff0c;成为了许多商家面临…

shuishusihui

互斥量 使用互斥量可以用于保护某些临界资源&#xff0c;同一时间只能有一个任务来使用它。 使用互斥量会引入其他问题&#xff0c;比如说优先级反转&#xff0c;于是提出了优先级继承等方法解决问题 任务通知 任务通知就是通知任务&#xff0c;前边都是多对多的关系&#xff0…

算法解析——双指针算法(3)数据匹配

欢迎来到博主的专栏——算法解析 博主ID&#xff1a;代码小豪 文章目录 LCR179、查找总价格为目标值的两个商品leetcode11——盛水最多的容器leetcode611——有效三角形的个数 我们前面已经盘点了两种双指针算法的使用场景&#xff0c;现在来看看最常见的一种。 通常&#xff0…

社交电商系统开发功能定制

社交电商系统开发功能定制是一项综合性的服务&#xff0c;它涉及到需求分析、界面设计、功能开发、系统测试以及上线后的持续维护。以下是社交电商系统开发中应考虑的关键功能点&#xff1a; 需求分析和规划&#xff1a;开发前&#xff0c;企业需要明确业务需求&#xff0c;包…

【数据分析:一篇文章带你掌握Pandas高级可视化技巧】

前言&#xff1a; &#x1f49e;&#x1f49e;大家好&#xff0c;我是书生♡&#xff0c;本阶段和大家一起分享和探索数据分析的数据可视化&#xff0c;本篇文章主要讲述了&#xff1a;掌握Pandas高级可视化技巧等等。欢迎大家一起探索讨论&#xff01;&#xff01;&#xff01…

docker的swarm技术

docker中swarm技术 docker swarm技术是docker社区提供的docker的集群管理调度工具&#xff0c;通过api来管理多个主机上的docker&#xff0c;通过overlay网络来实现不同主机之间容器的通信与访问。实现容器的调度&#xff0c;资源的分配&#xff0c;以及副本。 docker swarm中…