DrawIO 绘图规范文档
一、基本要求
1.1 颜色规范
- 配色原则:颜色应与内容逻辑关联,而非简单的元素分类。使用颜色表达技术演进、因果关系或方案价值判断
- 整体主要颜色不超过 4 种
推荐使用颜色(RGB值):
- 蓝色 #0070C0:触发点/关键突破 - 用于问题的触发点或解决问题的关键突破点,传达"这是转折"
- 橄榄绿 #799540:负面后果/影响 - 用于问题导致的负面结果,传达"这是问题的后果"
- 棕色 #9C4A09:核心机制/方案 - 用于核心的技术机制或方案(无论历史或现代),传达"这是核心逻辑"
- 绿色 #00B050:正面价值/最佳实践 - 用于正确做法和现代最佳实践,传达"这是正确方向"
- 灰色:RGB(102,102,102) = #666666 - 用于边框线条
- 黑色:RGB(0,0,0) = #000000 - 用于边框轮廓
配色逻辑示例(TCP_NODELAY主题):
- 蓝色 #0070C0:小包问题(问题的触发点)、TCP_NODELAY(关键突破点)
- 橄榄绿 #799540:4000%开销(问题的负面后果)
- 棕色 #9C4A09:Nagle算法、延迟确认、死锁效应(核心机制,历史方案)
- 绿色 #00B050:应用层处理、现代分布式系统、中间件配置(最佳实践)
这样配色形成清晰的逻辑叙事:
- 蓝色触发问题 → 橄榄绿产生负面后果
- 棕色提出历史方案 → 但又产生新的问题(死锁)
- 蓝色提出关键突破(TCP_NODELAY) → 绿色形成现代最佳实践
1.2 字体规范
- 中文字体:微软雅黑 (Microsoft YaHei)
- 字体颜色:白色 (#FFFFFF)
字体大小:
- 层标题:14px,加粗
- 分组标题:13px
- 节点内容:12px
- 对齐方式:居中对齐 (align=center)
1.3 线条规范
- 线宽统一为 1pt:所有线条的 strokeWidth=1,包括框图边框、箭头连线等
- 层框线(一、二、三等主要内容框):实线,strokeColor=#666666(给人清晰简洁的感觉)
- 系统边界(最外层大框):虚线 (dashed=1),dashPattern="8 8"
- 子系统/模块级框图:实线,strokeColor=#666666
- 节点边框:带填充颜色的节点无边框(strokeColor=none),无填充颜色的节点才有边框(strokeColor=#000000)
- 禁止连线跨越框图
连线连接点规范:连线应从元素的合适位置连接,确保美观
水平连接:当两个元素在同一水平线(Y坐标相近)时,使用水平箭头
- 从源元素右侧中心连接(exitX=1, exitY=0.5)
- 到目标元素左侧中心连接(entryX=0, entryY=0.5)
- 避免从底部连接到顶部这种不美观的方式
垂直连接:当两个元素在同一垂直线(X坐标相近)时,使用垂直箭头
- 从源元素底部中心连接(exitX=0.5, exitY=1)
- 到目标元素顶部中心连接(entryX=0.5, entryY=0)
- 跨区域连接:当元素在不同区域时,优先使用水平连接,必要时使用折线(Array points)避免交叉
避免与框线重叠:连线路径应避开区域框线,避免与框线重叠
- 当连线需要跨越多个区域时,应使用折线路径,让连线在区域外部绕过框线
- 例如:从区域A到区域C,路径应为:A右侧 → 区域外(避开B区域框线)→ 向下 → 向左到C
- 折线路径应保持至少10-20px的间距,避免与框线紧贴
避免穿越元素:连线路径不能穿越任何长方形元素(节点、框等)
- 当连线路径需要经过元素附近时,应使用折线路径绕过元素
- 路径应保持在元素外部,保持至少10-20px的安全间距
- 例如:从元素A到元素C,如果中间有元素B,路径应为:A右侧 → 绕过B元素(在B下方或上方)→ 到C左侧
- 计算元素边界:元素x坐标到x+width,y坐标到y+height,连线路径应避开这个矩形区域
1.4 背景规范
- 整体背景:无填充 (fillColor=none)
- 最外层框:无填充
- 内部子分组框:无填充(避免内容被覆盖)
- 节点框:有颜色填充
1.5 布局规范
- 无跨线
- 文字不能跨线
- 保持图中文字和正文的一致性
- 确保黑白打印、彩色打印、投影都清晰
1.6 文件命名规范
- 文件名后缀必须是
.drawio.svg - 此格式在 VSCode 中使用 DrawIO 插件编辑,复制到其他地方则作为 SVG 图片显示
- 示例:
architecture.drawio.svg
二、进阶要求
2.1 标题处理
- 层标题与框分离,避免覆盖内容
- 标题作为独立文本元素放置在框上方
- 标题位置:Y轴统一,X轴左对齐
2.2 对齐与对称
- 同层节点保持相同高度(建议70px)
- 同组内节点Y轴对齐,间距统一(建议90px)
- 分组框之间保持均匀间距
- 三列对称:中间列居中,左右列对称分布(包括水平和垂直方向,相对于框线)
2.2.1 框内元素对称性要求(核心原则)
- 必须同时满足上下对称和左右对称:框内元素必须同时满足垂直居中和水平居中,不能只满足其中一个
- 元素不能超出框线:所有元素的边界(x, y, x+width, y+height)必须完全在框的边界内,不能覆盖或超出框线
- 最小边距要求:元素与框线之间必须保持至少10px的最小间距,确保视觉清晰且不会误触框线
验证公式:
- 元素左边界:元素X ≥ 框X + 10px
- 元素右边界:元素X + 元素宽度 ≤ 框X + 框宽度 - 10px
- 元素上边界:元素Y ≥ 框Y + 10px
- 元素下边界:元素Y + 元素高度 ≤ 框Y + 框高度 - 10px
2.2.2 单个元素的对称布局
垂直居中(上下对称):
- 计算公式:元素Y坐标 = 框Y坐标 + (框高度 - 元素高度) / 2
- 验证:上边距 = 下边距 = (框高度 - 元素高度) / 2
- 例如:框Y=100,框高200px,元素高70px,则元素Y = 100 + (200-70)/2 = 165px(上下各留65px)
水平居中(左右对称):
- 计算公式:元素X坐标 = 框X坐标 + (框宽度 - 元素宽度) / 2
- 验证:左边距 = 右边距 = (框宽度 - 元素宽度) / 2
- 例如:框X=50,框宽500px,元素宽180px,则元素X = 50 + (500-180)/2 = 210px(左右各留160px)
2.2.3 多个元素的对称布局
水平排列的多个元素(必须同时满足左右对称和上下对称):
水平方向(左右对称):
- 步骤1:计算内容总宽度 = 节点宽度×数量 + 间距×(数量-1)
- 步骤2:计算左边距 = (框宽度 - 内容总宽度) / 2
- 步骤3:验证左边距 ≥ 10px(最小边距要求)
- 步骤4:如果左边距 < 10px,需要增大框宽度或减小节点宽度/间距
- 步骤5:第一个节点X坐标 = 框X + 左边距
- 步骤6:后续节点X坐标 = 前一个节点X + 前一个节点宽度 + 间距
垂直方向(上下对称):
- 所有水平排列的元素必须在垂直方向上居中
- 计算公式:元素Y坐标 = 框Y坐标 + (框高度 - 元素高度) / 2
- 验证:上边距 = 下边距 = (框高度 - 元素高度) / 2
完整示例:框X=50,框Y=100,框宽920px,框高200px,4个节点每个180px×70px,间距50px
水平方向:
- 内容总宽 = 180×4 + 50×3 = 870px
- 左边距 = (920 - 870) / 2 = 25px(满足≥10px要求)
- 节点1 X = 50 + 25 = 75px
- 节点2 X = 75 + 180 + 50 = 305px
- 节点3 X = 305 + 180 + 50 = 535px
- 节点4 X = 535 + 180 + 50 = 765px
- 验证:节点4右边界 = 765 + 180 = 945px,框右边界 = 50 + 920 = 970px,右边距 = 970 - 945 = 25px(与左边距相等)
垂直方向:
- 所有节点Y = 100 + (200 - 70) / 2 = 165px
- 验证:上边距 = 165 - 100 = 65px,下边距 = (100 + 200) - (165 + 70) = 65px(上下对称)
垂直排列的多个元素(必须同时满足上下对称和左右对称):
垂直方向(上下对称):
- 步骤1:计算内容总高度 = 节点高度×数量 + 间距×(数量-1)
- 步骤2:计算上边距 = (框高度 - 内容总高度) / 2
- 步骤3:验证上边距 ≥ 10px(最小边距要求)
- 步骤4:如果上边距 < 10px,需要增大框高度或减小节点高度/间距
- 步骤5:第一个节点Y坐标 = 框Y + 上边距
- 步骤6:后续节点Y坐标 = 前一个节点Y + 前一个节点高度 + 间距
水平方向(左右对称):
- 所有垂直排列的元素必须在水平方向上居中
- 计算公式:元素X坐标 = 框X坐标 + (框宽度 - 元素宽度) / 2
- 验证:左边距 = 右边距 = (框宽度 - 元素宽度) / 2
完整示例:框X=50,框Y=100,框宽500px,框高400px,3个节点每个180px×70px,间距40px
垂直方向:
- 内容总高 = 70×3 + 40×2 = 290px
- 上边距 = (400 - 290) / 2 = 55px(满足≥10px要求)
- 节点1 Y = 100 + 55 = 155px
- 节点2 Y = 155 + 70 + 40 = 265px
- 节点3 Y = 265 + 70 + 40 = 375px
- 验证:节点3下边界 = 375 + 70 = 445px,框下边界 = 100 + 400 = 500px,下边距 = 500 - 445 = 55px(与上边距相等)
水平方向:
- 所有节点X = 50 + (500 - 180) / 2 = 210px
- 验证:左边距 = 210 - 50 = 160px,右边距 = (50 + 500) - (210 + 180) = 160px(左右对称)
2.2.4 网格布局的对称性(多行多列)
行列对称原则:多行多列布局时,必须同时满足:
- 行与行之间的垂直间距对称(上下边距相等)
- 列与列之间的水平间距对称(左右边距相等)
- 整体内容在框内垂直居中(上下对称)
- 整体内容在框内水平居中(左右对称)
计算方法(以2行3列为例):
步骤1:计算整体内容区域
- 内容总宽度 = 节点宽度×列数 + 列间距×(列数-1)
- 内容总高度 = 节点高度×行数 + 行间距×(行数-1)
步骤2:计算整体内容的边距(确保整体居中)
- 左边距 = (框宽度 - 内容总宽度) / 2
- 上边距 = (框高度 - 内容总高度) / 2
- 验证:左边距 ≥ 10px,上边距 ≥ 10px
步骤3:计算每行的水平位置(左右对称)
- 第一列X坐标 = 框X + 左边距
- 后续列X坐标 = 前一列X + 节点宽度 + 列间距
步骤4:计算每列的垂直位置(上下对称)
- 第一行Y坐标 = 框Y + 上边距
- 后续行Y坐标 = 前一行Y + 节点高度 + 行间距
完整示例:框X=50,框Y=100,框宽920px,框高400px,2行3列,节点180px×70px,列间距50px,行间距40px
- 步骤1:内容总宽 = 180×3 + 50×2 = 640px,内容总高 = 70×2 + 40×1 = 180px
- 步骤2:左边距 = (920 - 640) / 2 = 140px,上边距 = (400 - 180) / 2 = 110px(都满足≥10px)
步骤3:列位置
- 第1列X = 50 + 140 = 190px
- 第2列X = 190 + 180 + 50 = 420px
- 第3列X = 420 + 180 + 50 = 650px
步骤4:行位置
- 第1行Y = 100 + 110 = 210px
- 第2行Y = 210 + 70 + 40 = 320px
- 验证:整体左右对称(左边距=右边距=140px),整体上下对称(上边距=下边距=110px)
2.2.5 不同大小元素的对称布局
- 问题场景:框内元素大小不一致(如有些宽180px,有些宽200px)
解决方法:
- 方法1:统一元素大小(推荐):调整所有元素为相同尺寸,然后按2.2.3节方法布局
方法2:按最大元素计算:以最大元素尺寸为准,其他元素保持相同间距
- 计算时使用最大宽度和最大高度
- 小元素在各自位置内居中
方法3:分组布局:将相同大小的元素分组,每组内部对称,组与组之间也对称
- 先计算每组的总宽度/高度
- 再按"多个元素的对称布局"方法计算组的位置
- 最后在组内计算元素位置
2.2.6 嵌套框的对称性
子框在父框内的对称:子框本身作为元素,必须满足父框的对称性要求
- 子框在父框内必须垂直居中和水平居中(或按布局规则对称分布)
- 子框不能超出父框边界,与父框线保持至少10px间距
- 子框内元素的对称:子框内的元素按2.2.2-2.2.4节方法计算,相对于子框边界
示例:父框X=50,Y=100,宽920px,高400px;子框宽340px,高220px
- 子框在父框内居中:子框X = 50 + (920-340)/2 = 340px,子框Y = 100 + (400-220)/2 = 190px
- 子框内元素按子框边界(X=340,Y=190)计算位置
2.2.7 标题与内容对齐
标题位置规则:
- 规则1:标题通常放置在框外上方(按2.1节要求)
- 规则2:如果标题在框内,必须满足框内元素的对称性要求(不能覆盖框线)
标题与内容对齐:
- 当标题在框外上方时:标题X坐标与框X坐标左对齐(按2.1节要求)
- 当标题需要与内容中线对齐时:标题X坐标 = 内容中X坐标 + (内容宽度 - 标题宽度) / 2
- 例如:节点X=80,宽140,则节点中线=80+70=150;标题宽200,则标题X=150-100=50
- 标题不能覆盖框线:标题应放置在框外上方,或确保标题完全在框内且不覆盖框线
2.3 尺寸建议
- 系统边界:根据内容自适应,留出足够边距
- 层框高度:根据内容自适应(100px-260px)
- 节点宽度:根据内容自适应(140px-500px)
- 分组框宽度:建议340px-360px
2.4 文本简化
- 核心信息优先保留
- 长文本适当换行( )
- 标题与说明分行显示
- 避免文字过长溢出
三、颜色使用原则
3.1 元素分类着色
- 创新组件(编号1-8):#9C4A09(棕色)
- 标准K8s组件:#00B050(绿色)
- 边框线条:#666666(灰色)或 #000000(黑色)
3.2 颜色简化原则
- 不一定非得用掉所有颜色
- 优先保证可读性和清晰度
- 同类元素使用相同颜色
- 避免颜色过多导致混乱
3.3 打印适应性
- 黑白打印:通过深浅对比区分
- 彩色打印:通过颜色区分类型
- 投影:高对比度,避免浅色
四、结构设计原则
4.1 KISS 原则
- Keep It Simple, Stupid
- 布局清朗,避免复杂嵌套
- 层级分明,关系清晰
- 去除不必要的装饰
4.2 层级结构
- 最外层:系统边界(虚线框)
- 第一层:层标题 + 层框
- 第二层:子分组框(可选)
- 第三层:节点元素
4.3 框图类型
- 系统边界:虚线,无填充
- 层框:虚线,无填充
- 子分组框:实线,无填充
- 节点框:实线,有填充
五、DrawIO 语法规范
5.1 节点元素
<!-- 带颜色的节点(无边框) -->
<mxCell id="xxx" value="标题
说明"
style="rounded=1;whiteSpace=wrap;html=1;strokeColor=none;fillColor=#9C4A09;fontFamily=Microsoft YaHei;fontSize=12;fontColor=#FFFFFF;align=center;"
vertex="1" parent="1">
<mxGeometry x="0" y="0" width="100" height="70" as="geometry" />
</mxCell>
<!-- 无填充颜色的节点(有黑色边框) -->
<mxCell id="xxx" value="标题"
style="rounded=1;whiteSpace=wrap;html=1;strokeWidth=1;strokeColor=#000000;fillColor=#00B050;fontFamily=Microsoft YaHei;fontSize=12;fontColor=#FFFFFF;align=center;"
vertex="1" parent="1">
<mxGeometry x="0" y="0" width="100" height="70" as="geometry" />
</mxCell>5.2 框图元素
<!-- 虚线框 -->
<mxCell id="xxx" value=""
style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=1;strokeColor=#666666;dashed=1;dashPattern=8 8;fillColor=none;"
vertex="1" parent="1">
<mxGeometry x="0" y="0" width="1000" height="100" as="geometry" />
</mxCell>
<!-- 实线框 -->
<mxCell id="xxx" value=""
style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=1;strokeColor=#666666;fillColor=none;"
vertex="1" parent="1">
<mxGeometry x="0" y="0" width="350" height="220" as="geometry" />
</mxCell>5.3 文本标题
<mxCell id="xxx" value="标题文字"
style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Microsoft YaHei;fontSize=14;fontColor=#000000;fontStyle=1"
vertex="1" parent="1">
<mxGeometry x="0" y="0" width="200" height="30" as="geometry" />
</mxCell>5.4 连线元素
<!-- 水平连接(元素在同一水平线) -->
<mxCell id="arrow1" value="标签文字"
style="endArrow=classic;html=1;strokeWidth=1;strokeColor=#666666;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;"
edge="1" parent="1" source="source-id" target="target-id">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<!-- 垂直连接(元素在同一垂直线) -->
<mxCell id="arrow2" value=""
style="endArrow=classic;html=1;strokeWidth=1;strokeColor=#666666;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;"
edge="1" parent="1" source="source-id" target="target-id">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<!-- 跨区域连接(使用折线,避免与框线重叠和穿越元素) -->
<mxCell id="arrow3" value="标签文字"
style="endArrow=classic;html=1;strokeWidth=1;strokeColor=#666666;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;"
edge="1" parent="1" source="source-id" target="target-id">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<!-- 从源元素右侧出发,向右绕过中间区域的框线 -->
<!-- 注意:620 > 560(中间区域右边界),保持60px安全距离 -->
<mxPoint x="620" y="270" />
<!-- 向下,避开中间元素(元素范围y:760-820),保持在y=850 -->
<!-- 注意:850 > 820(元素底部),保持30px安全距离 -->
<mxPoint x="620" y="850" />
<!-- 向左到目标元素左侧 -->
<mxPoint x="860" y="850" />
<!-- 向上到目标元素中心 -->
<mxPoint x="860" y="790" />
</Array>
</mxGeometry>
</mxCell>六、检查清单
完成绘图后,请检查以下项目:
- [ ] 文件名后缀为
.drawio.svg - [ ] 颜色不超过4种
- [ ] 字体使用微软雅黑,颜色为白色
- [ ] 线条宽度统一为 1pt(包括框图边框、节点边框、连线,所有strokeWidth=1)
- [ ] 层框线使用实线(主要内容框)
- [ ] 系统边界使用虚线(最外层大框)
- [ ] 带颜色填充的节点无边框(strokeColor=none)
- [ ] 无连线跨越框图
- [ ] 连线连接点美观(水平连接用左右,垂直连接用上下)
- [ ] 连线不与框线重叠(跨区域连线使用折线路径绕过框线)
- [ ] 连线不穿越元素(使用折线路径绕过元素,保持安全间距)
- [ ] 无文字跨线
- [ ] 大框无背景色(无填充)
- [ ] 标题与框分离,不被覆盖
- [ ] 标题与内容中线对齐
- [ ] 同层节点高度一致
- [ ] 框内元素必须同时满足上下对称和左右对称(不能只满足其中一个)
- [ ] 框内元素上下间距对称(垂直居中,上边距=下边距)
- [ ] 框内元素左右间距对称(水平居中,左边距=右边距)
- [ ] 所有元素完全在框内,不覆盖或超出框线(元素边界在框边界内)
- [ ] 元素与框线之间保持至少10px的最小间距
- [ ] 节点水平位置居中对称,无重叠
- [ ] 分组对称,间距均匀
- [ ] 黑白打印清晰
- [ ] 彩色打印清晰
- [ ] 投影显示清晰
- [ ] 导出PDF不丢失元素
七、最佳实践
7.1 设计流程
- 先确定整体布局和层级结构
- 规划颜色方案,根据元素类型分配
- 使用网格辅助对齐(grid=1, gridSize=10)
- 先画框,再画节点,最后调整对齐
- 导出多种格式测试效果
7.2 调试技巧
- 使用 guides=1 启用辅助线
- 使用 tooltips=1 查看元素信息
- 保存前导出PNG检查效果
- 对称布局时计算精确坐标
7.4 对称性验证方法
验证步骤:
- 选择框内所有元素,查看它们的X、Y坐标
- 计算左边距 = 第一个元素X - 框X
- 计算右边距 = (框X + 框宽度) - (最后一个元素X + 元素宽度)
- 验证:左边距 = 右边距(允许1-2px误差,因为像素对齐)
- 计算上边距 = 第一个元素Y - 框Y
- 计算下边距 = (框Y + 框高度) - (最后一个元素Y + 元素高度)
- 验证:上边距 = 下边距(允许1-2px误差)
- 验证所有元素边界:元素X ≥ 框X + 10px,元素X + 宽度 ≤ 框X + 框宽度 - 10px
- 验证所有元素边界:元素Y ≥ 框Y + 10px,元素Y + 高度 ≤ 框Y + 框高度 - 10px
DrawIO检查工具:
- 使用"排列"菜单的"对齐"功能检查元素对齐
- 使用"视图"菜单的"网格"功能辅助对齐
- 使用"编辑"菜单的"选择"功能批量选择元素查看坐标
7.3 常见问题
- 问题:内容被框覆盖 → 解决:标题与框分离
- 问题:不对齐 → 解决:使用网格计算坐标
- 问题:颜色过多 → 解决:合并同类元素颜色
- 问题:文字溢出 → 解决:增大节点宽度或简化文本
- 问题:连线不美观(从底部连接到顶部) → 解决:检查元素位置,同一水平线用水平箭头(右侧→左侧),同一垂直线用垂直箭头(底部→顶部)
- 问题:连线与框线重叠 → 解决:使用折线路径,让连线在区域外部绕过框线,保持至少10-20px间距
- 问题:连线穿越元素 → 解决:使用折线路径绕过元素,路径保持在元素外部,保持至少10-20px安全间距
问题:框内元素上下对称但左右不对称(或反之) → 解决:
- 检查是否只计算了垂直居中或只计算了水平居中
- 必须同时计算上下对称和左右对称
- 使用2.2.2和2.2.3节的计算公式,分别计算X坐标和Y坐标
- 验证:左边距=右边距,上边距=下边距
问题:元素盖住框线或超出框线 → 解决:
- 检查元素边界是否在框边界内:元素X≥框X+10px,元素X+宽度≤框X+框宽度-10px
- 检查元素Y≥框Y+10px,元素Y+高度≤框Y+框高度-10px
- 如果元素超出,需要调整元素位置或增大框的尺寸
- 确保所有元素与框线保持至少10px的最小间距
问题:多个元素布局时,左右对称但上下不对称(或反之) → 解决:
- 对于水平排列的元素:使用2.2.3节的方法计算水平位置,同时使用2.2.2节的方法计算垂直位置
- 对于垂直排列的元素:使用2.2.3节的方法计算垂直位置,同时使用2.2.2节的方法计算水平位置
- 确保所有元素在框内垂直居中(上下对称),同时水平居中(左右对称)
问题:网格布局时整体不对称 → 解决:
- 使用2.2.4节的完整计算方法
- 先计算整体内容区域,确保整体在框内居中
- 再计算每行每列的具体位置
- 验证整体边距:左边距=右边距,上边距=下边距
问题:元素大小不一致导致不对称 → 解决:
- 优先使用2.2.5节方法1:统一元素大小
- 如果必须保持不同大小,使用方法2或方法3
- 确保整体布局仍然对称
问题:嵌套框内的元素不对称 → 解决:
- 先确保子框在父框内对称(使用2.2.6节方法)
- 再确保子框内元素相对于子框对称(使用2.2.2-2.2.4节方法)
- 逐层验证,确保每层都满足对称性要求
八、版本控制
2025-12-24 v1.5: 深度完善对称性规范和修复不一致问题
- 修复strokeWidth不一致:统一所有示例代码为strokeWidth=1(之前框图示例错误使用strokeWidth=2)
- 完善2.2.3节:明确水平排列元素必须同时满足左右对称和上下对称,补充完整示例
- 完善2.2.3节:明确垂直排列元素必须同时满足上下对称和左右对称,补充完整示例
- 完善2.2.4节网格布局:添加详细的计算步骤和完整示例(2行3列)
- 新增2.2.5节:不同大小元素的对称布局方法(3种解决方案)
- 新增2.2.6节:嵌套框的对称性规范(子框在父框内的对称,子框内元素的对称)
- 完善2.2.7节(原2.2.5节):澄清标题对齐规则(框外上方 vs 内容中线对齐)
- 新增7.4节:对称性验证方法(9步验证流程和DrawIO检查工具)
- 在常见问题中补充网格布局、不同大小元素、嵌套框的对称性问题解决方案
- 在检查清单中补充线条宽度一致性检查
2025-12-24 v1.4: 完善框内元素对称性和框线覆盖规范
- 明确要求框内元素必须同时满足上下对称和左右对称(不能只满足其中一个)
- 明确要求元素不能超出框线,必须完全在框内
- 添加元素与框线之间的最小间距要求(至少10px)
- 完善单个元素、多个元素、网格布局的对称性计算公式和示例
- 添加元素边界验证公式,确保元素不覆盖框线
- 在检查清单中补充对称性和框线覆盖的检查项
- 在常见问题中补充对称性和框线覆盖问题的解决方案
2025-12-24 v1.3: 新增连线避免穿越元素的规范
- 添加连线不能穿越长方形元素的要求
- 添加计算元素边界和保持安全间距的方法
- 更新示例代码展示如何同时避开框线和元素
- 在检查清单和常见问题中补充穿越元素问题的检查
2025-12-24 v1.2: 新增连线避免与框线重叠的规范
- 添加跨区域连线使用折线路径绕过框线的要求
- 添加避免框线重叠的示例代码和检查项
- 在常见问题中补充框线重叠问题的解决方案
2025-12-24 v1.1: 新增连线连接点规范,优化连线美观性要求
- 添加水平连接和垂直连接的规范
- 添加连线连接点示例代码
- 在检查清单和常见问题中补充连线美观性检查
- 2025-12-23 v1.0: 初始版本,基于字节跳动K8s架构图总结