先看下效果圖

organization2.png
其中html代碼
<div class="org-tree">
<ul>
<li class="ceo">
<div>
<span>總經(jīng)理</span><br/>
<span>張三,李四四四</span>
</div>
<ul>
<li class="manager lineLeft">
<div>技術(shù)總監(jiān)</div>
</li>
<li class="manager line">
<i class="left"></i>
<div>產(chǎn)品總監(jiān)</div>
<i class="right"></i>
</li>
<li class="manager lineRight">
<div>運(yùn)營(yíng)總監(jiān)</div>
</li>
</ul>
<div class="companyManagerBox">
<div class="companyManager">
<span>總經(jīng)理</span><br/>
<span>張三,李四四四</span>
</div>
</div>
<ul>
<li class="department">
<div>前端開發(fā)部</div>
<ul>
<li class="employee">
<div>
<span>前端工程師A</span>
<span>張三,李思思</span>
</div>
</li>
<li class="employee"><div>前端工程師</div></li>
<li class="employee"><div>前端工程師C</div></li>
</ul>
</li>
<li class="department">
<div>后端開發(fā)部</div>
<ul>
<li class="employee"><div>后端工程師A</div></li>
<li class="employee"><div>
<span>前端工程師A</span>
<span>張三,李思思</span>
</div></li>
<li class="employee"><div>后端工程師C</div></li>
</ul>
</li>
<li class="department">
<div>測(cè)試部</div>
<ul>
<li class="employee"><div>測(cè)試工程師A</div></li>
<li class="employee"><div>測(cè)試工程師B</div></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
css代碼,主要用ul和li的before、after偽元素進(jìn)行設(shè)置,其中ul偽元素主要用來(lái)實(shí)現(xiàn)連接下方的線,li的偽元素主要是來(lái)實(shí)現(xiàn)連接左右的線,li要加上padding,這樣可以實(shí)現(xiàn)左右有間隔距離,并且偽元素連接的線也正好是li的一半寬度
其中第二層組織,是單獨(dú)添加一個(gè)ul標(biāo)簽來(lái)實(shí)現(xiàn)的
ul,li{
list-style: none;
margin: 0;
padding: 0;
box-sizing: border-box;
}
.org-tree {
display: flex;
justify-content: center;
padding: 20px;
}
.org-tree ul {
position: relative;
padding: 16px 0;
margin: 0 auto;
text-align: center;
display: flex;
justify-content: center;
}
.org-tree ul::after {
content: '';
display: block;
clear: both;
}
.org-tree li {
/* display: inline-block; */
float: left;
text-align: center;
position: relative;
padding: 16px 8px 0 8px;
}
.org-tree li::before,
.org-tree li::after {
content: '';
position: absolute;
top: 0;
right: 50%;
border-top: 2px solid #ccc;
width: 50%;
height: 16px;
}
.org-tree li::after {
left: 50%;
border-left: 2px solid #ccc;
}
.org-tree li:first-child::before,
.org-tree li:last-child::after {
border: 0 none;
}
.org-tree li:last-child::before {
border-right: 2px solid #ccc;
border-radius: 0 5px 0 0;
}
.org-tree li:first-child::after {
border-radius: 5px 0 0 0;
}
.org-tree .ceo::after,
.org-tree .ceo::before {
height: 0;
}
.org-tree ul ul::before {
content: '';
position: absolute;
top: 0;
left: 50%;
border-left: 2px solid #ccc;
width: 0;
height: 16px;
}
.org-tree li div {
border: 2px solid #ccc;
padding: 8px 3px;
display: inline-block;
border-radius: 5px;
color: #333;
font-size: 14px;
background: #fff;
width: 120px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.org-tree .employee div {
width: 40px;
height: 150px;
}
.org-tree .employee div span {
display: inline-block;
}
.org-tree .employee div span:first-child {
margin-bottom: 10px;
}
.org-tree .companyManagerBox {
border: 0;
padding: 16px 8px 0 8px;
box-shadow: none;
background-color: transparent;
width:auto;
position: relative;
}
.org-tree .companyManagerBox::before{
position: absolute;
content: '';
width: 50%;
height: 16px;
left: 0%;
top: 0;
border-right: 2px solid #ccc;
}
.line .left {
position: absolute;
content: '';
width: 50%;
height: 16px;
left: 0%;
bottom: -16px;
border-bottom: 2px solid #ccc;
}
.line .right {
position: absolute;
content: '';
width: 50%;
height: 16px;
left: 50%;
bottom: -16px;
border-left: 2px solid #ccc;
border-bottom: 2px solid #ccc;
}
.org-tree .ceo .lineLeft::before {
left: 50%;
bottom: -16px;
top: auto;
border-left: 2px solid #ccc;
border-bottom: 2px solid #ccc;
border-radius: 0 0px 0 5px;
}
.org-tree .ceo .lineRight::after {
right: 50%;
bottom: -16px;
left: auto;
top: auto;
border-right: 2px solid #ccc;
border-bottom: 2px solid #ccc;
border-radius: 0 0px 5px 0;
}