拓扑图功能

基于html+svg实现拓扑图编辑和展示,支持节点连接、包含关系、拖拽编辑等功能

拓扑图功能
1 mins
Loading... views

拓扑图功能

基于html+svg实现拓扑图编辑和展示 示例图

🔗 相关链接

分析及技术点

功能技术点
toolbar拖拽记录鼠标位置;
拖拽物体的显示隐藏;
连接关系:创建连线绘制时:使用svg的 <line>,需正确获取起始和终止点;
结束绘制:使用<path>路径绘制连线形态,根据两者节点位置不同,共计4种连线形态展示;
包含关系:单层嵌套依据最终的位置判断是否为包含关系(这里的算法有待优化);
重新计算父节点宽高: 父结点宽高为子节点宽高+边距
重新计算子节点的位置信息:父节点位置信息 - 边距
包含关系:多层嵌套通过递归的方式完成嵌套布局
包含关系:并列嵌套父节点宽高:内部子节点宽度之和 + 边距,父节点高度:最高子节点高度 + 边距;
每个子节点位置:当前节点位置 = 前一个节点位置 + 前一个节点宽度 + 间隔边距
删除:单结点删除节点同时删除关联连线(source&target)
删除:包含关系删除包含关系同时恢复父节点的宽高同时刷新并列节点位置
删除:连线刷新原本有连线的连接点样式
删除:多节点使用for循环,注意i—
框选使用<reat>,根据鼠标移动位移的正负数,选择不同的x和y值
svg的viewbox的移动功能记录鼠标移动的位移,修改viewbox的视图位置