可纯CSS实现树形结构:一、无序列表缩进法,用伪元素绘连接线;二、Flexbox布局,配合transform画斜线;三、CSS Grid精确定位节点;四、SVG内联+CSS动画绘制路径。

如果您希望在网页中呈现层级清晰的树形结构,但不依赖JavaScript库或外部框架,则可以利用HTML嵌套与CSS样式组合实现。以下是几种纯CSS驱动的树形结构绘制方法:
一、使用无序列表与CSS缩进实现基础树形
该方法通过
- 和
- 的天然嵌套关系构建层级,并借助CSS的margin-left或padding-left控制子节点缩进,配合自定义列表标记模拟树节点连接线。适用于静态、层级较浅的结构。
1、在HTML中编写嵌套的
- 与
- 结构,每个
- 代表一个节点,子节点包裹在父
- 内部的
- 中。
- 添加position: relative,并在其::before伪元素中绘制垂直线段,长度依据层级动态计算。
4、为除第一级外的每个
- 的::before设置content: ""、position: absolute、left: -16px、top: 0、height: 100%、border-left: 1px solid #999。
5、为每个
- 的最后一个子
- 的::after添加水平横线,连接至父节点,形成“T”形分支结构。
二、采用Flexbox布局构建可伸缩树形节点
该方式利用display: flex控制节点水平对齐与垂直分布,结合transform旋转实现斜向连接线,适合需要响应式适配或节点宽度不一致的场景。
1、将每个节点封装为
,父子关系通过嵌套
容器表达。
2、为.parent节点设置display: flex、flex-direction: column,并为其.children设置display: flex、flex-wrap: wrap。
3、在父节点右侧插入一个绝对定位的
,内含两个span:一个垂直线(height: 100%)、一个水平线(width: 24px),交汇处设为border-radius: 50%模拟连接圆点。
4、对每个.children > .node应用margin-top: 12px统一垂直间距,避免重叠。
5、当子节点数量超过一行时,使用justify-content: center使多列子节点居中对齐主干。
标签: css javascript java html node svg 伪元素 css动画 css样式 绝对定位
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
2、为所有
- 设置list-style: none以移除默认圆点或数字标记。
立即学习“前端免费学习笔记(深入)”;
3、为每个
- 添加position: relative,并在其::before伪元素中绘制垂直线段,长度依据层级动态计算。
还木有评论哦,快来抢沙发吧~