多层树结构(从左至右)
效果
完整代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.flex-column {
display: flex;
flex-direction: column;
align-items: flex-start;
margin-left: 20px;
}
.item {
position: relative;
display: flex;
align-items: center;
}
.item:before {
content: '';
position: absolute;
left: -30px;
width: 1px;
/*这里的高度要等于自身高度 + 节点间margin高度 */
height: calc(100% + 20px);
top: 0;
transform: translateY(-10px);
background: #53a1ef;
}
.item .title:before {
content: "";
position: absolute;
left: -30px;
top: 50%;
width: 30px;
height: 1px;
background: #53a1ef;
}
.item .title {
display: block;
padding: 10px 20px;
border-radius: 10px;
background: #0092ee;
color: rgb(248, 248, 248);
width: 150px;
text-align: center;
margin: 5px 0;
box-shadow: 0 0 10px rgba(0, 0, 0, .05);
margin-right: 60px;
position: relative;
font-size: 14px;
font-weight: 600;
}
.item .title:after {
content: '';
width: 50px;
height: 1px;
background: #53a1ef;
position: absolute;
right: -50px;
top: 50%;
}
.item .title a {
text-decoration: none;
color: white;
font-size: 14px;
font-weight: 600;
}
.item .title a:hover {
cursor: pointer;
}
.item:first-child:before {
height: calc(50% + 10px);
transform: unset;
top: 50%;
}
.item:last-child:before {
height: calc(50% + 10px);
transform: unset;
top: -10px;
}
.item .title:not(:has(+.flex-column)):after {
display: none;
}
/* 下级只有一层时,隐藏竖线 */
.item:only-of-type:before {
content: '';
position: absolute;
left: -30px;
width: 1px;
/*这里的高度要等于自身高度 + 节点间margin高度 */
height: calc(100% + 20px);
top: 0;
transform: translateY(-10px);
background: white;
}
.tree .title {
display: block;
padding: 10px 20px;
border-radius: 10px;
background: #0092ee;
color: white;
width: 150px;
text-align: center;
margin: 5px 0;
box-shadow: 0 0 10px rgba(0, 0, 0, .05);
margin-right: 60px;
position: relative;
font-size: 14px;
font-weight: 600;
margin-left: 20px;
}
.tree .title:after {
content: '';
width: 50px;
height: 1px;
background: #53a1ef;
position: absolute;
right: -50px;
top: 50%;
}
</style>
</head>
<body>
<div style="display: flex; justify-content: left;align-items: center">
<div class="tree">
<span class="title">沟通汇报</span>
</div>
<div class="flex-column">
<div class="item">
<span class="title">沟通</span>
<div class="flex-column">
<div class="item"><span class="title"><a href="" target="_blank">沟通技巧</a></span></div>
<div class="item"><span class="title"><a href="" target="_blank">沟通技巧</a></span></div>
<div class="item"><span class="title"><a href="" target="_blank">沟通技巧</a></span></div>
<div class="item"><span class="title"><a href="" target="_blank">沟通技巧</a></span></div>
<div class="item"><span class="title"><a href="" target="_blank">沟通技巧</a></span></div>
</div>
</div>
<div class="item">
<span class="title">汇报</span>
<div class="flex-column">
<div class="item">
<span class="title">汇报</span>
<div class="flex-column">
<div class="item">
<span class="title"><a href="" target="_blank">报告与呈现</a></span>
</div>
<div class="item"><span class="title"><a href="" target="_blank">商务呈现</a></span></div>
<div class="item"><span class="title"><a href="" target="_blank">商务呈现</a></span></div>
<div class="item"><span class="title"><a href="" target="_blank">商务呈现</a></span></div>
<div class="item"><span class="title"><a href="" target="_blank">商务呈现</a></span></div>
<div class="item"><span class="title"><a href="" target="_blank">商务呈现</a></span></div>
</div>
</div>
<div class="item"><span class="title"><a href="" target="_blank">结构性思维与表达</a></span></div>
<div class="item"><span class="title"><a href="" target="_blank">结构性思维与表达</a></span></div>
<div class="item"><span class="title"><a href="" target="_blank">结构性思维与表达</a></span></div>
<div class="item"><span class="title"><a href="" target="_blank">结构性思维与表达</a></span></div>
<div class="item"><span class="title"><a href="" target="_blank">结构性思维与表达</a></span></div>
</div>
</div>
<div class="item">
<span class="title">谈判</span>
<div class="flex-column">
<div class="item"><span class="title"><a href="" target="_blank">高效谈判系列课</a></span></div>
</div>
</div>
</div>
</div>
</body>
</html>