You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ReactJS中实现带连接线的菜单层级流程图

层级菜单树连接线实现方案

1. 纯CSS实现(轻量化适配现有代码)

如果你已经完成了基础的嵌套列表结构开发,优先用这个方案,无需额外引入依赖,只用伪元素即可绘制连接线:

/* 基础树结构样式 */
.tree, .tree ul {
  list-style: none;
  padding-left: 20px;
  position: relative;
  margin: 0;
}
.tree li {
  position: relative;
  margin: 8px 0;
  line-height: 20px;
}
/* 绘制垂直连接线 */
.tree li::before {
  content: '';
  position: absolute;
  left: -16px;
  top: 0;
  height: 100%;
  border-left: 1px solid #d9d9d9;
}
/* 绘制水平连接线 */
.tree li::after {
  content: '';
  position: absolute;
  left: -16px;
  top: 10px;
  width: 12px;
  border-top: 1px solid #d9d9d9;
}
/* 隐藏最后一个子项底部多余的竖线 */
.tree li:last-child::before {
  height: 10px;
}
/* 根节点隐藏连接线 */
.tree > li::before, .tree > li::after {
  display: none;
}

你可以根据自己菜单的间距、行高调整像素值,即可匹配现有样式。

2. 组件库方案(低代码快速实现)

如果可以引入第三方组件,直接用成熟组件库的内置能力即可:

  • React项目可以使用antd Tree组件,开启showLine配置即可直接显示连接线,支持自定义样式
  • Vue项目可以使用element-plus ElTree组件,开启show-line属性即可
  • 原生JS项目可以使用jstree组件,内置连接线、折叠展开、节点拖拽等全量功能

3. SVG/Canvas自定义绘制(高定制场景)

如果你的树结构有特殊的交互、样式要求,可以计算每个树节点的坐标后,用SVG的<line>标签或者Canvas API手动绘制连接线,灵活度最高但需要自行处理坐标计算、窗口缩放重绘等逻辑,开发成本相对较高。

内容的提问来源于stack exchange,提问作者Guha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 22:15:03