css实现组织架构图1-一对多,逐级增多

先看下效果图


organization.png

其中html代码

<div class="org-tree">
  <ul>
    <li class="ceo">
      <div>
        <span>总经理</span><br/>
        <span>张三,李四四四</span>
      </div>
      <ul>
        <li class="manager">
          <div>技术总监</div>
          <ul>
            <li class="department">
              <div>前端开发部</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>后端开发部</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>测试部</div>
              <ul>
                <li class="employee"><div>测试工程师A</div></li>
                <li class="employee"><div>测试工程师B</div></li>
              </ul>
            </li>
          </ul>
        </li>
        <li class="manager">
          <div>产品总监</div>
          <ul>
            <li class="department">
              <div>产品设计部</div>
              <ul>
                <li class="employee"><div>产品经理A</div></li>
                <li class="employee"><div>产品经理B</div></li>
              </ul>
            </li>
            <li class="department">
              <div>UI设计部</div>
              <ul>
                <li class="employee"><div>UI设计师A</div></li>
                <li class="employee"><div>UI设计师B</div></li>
              </ul>
            </li>
          </ul>
        </li>
        <li class="manager">
          <div>运营总监</div>
          <ul>
            <li class="department">
              <div>市场部</div>
              <ul>
                <li class="employee"><div>市场专员A</div></li>
                <li class="employee"><div>市场专员B</div></li>
              </ul>
            </li>
            <li class="department">
              <div>客服部</div>
              <ul>
                <li class="employee"><div>客服专员A</div></li>
                <li class="employee"><div>客服专员B</div></li>
                <li class="employee"><div>客服专员C</div></li>
              </ul>
            </li>
          </ul>
        </li>
      </ul>
    </li>
  </ul>
</div>

css代码,主要用ullibefore、after伪元素进行设置,其中ul伪元素主要用来实现连接下方的线,li的伪元素主要是来实现连接左右的线,li要加上padding,这样可以实现左右有间隔距离,并且伪元素连接的线也正好是li的一半宽度

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;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • """1.个性化消息: 将用户的姓名存到一个变量中,并向该用户显示一条消息。显示的消息应非常简单,如“Hello ...
    她即我命阅读 8,940评论 0 6
  • 为了让我有一个更快速、更精彩、更辉煌的成长,我将开始这段刻骨铭心的自我蜕变之旅!从今天开始,我将每天坚持阅...
    李薇帆阅读 6,335评论 1 4
  • 似乎最近一直都在路上,每次出来走的时候感受都会很不一样。 1、感恩一直遇到好心人,很幸运。在路上总是...
    时间里的花Lily阅读 5,412评论 1 3
  • 1、expected an indented block 冒号后面是要写上一定的内容的(新手容易遗忘这一点); 缩...
    庵下桃花仙阅读 3,818评论 0 2
  • 一、工具箱(多种工具共用一个快捷键的可同时按【Shift】加此快捷键选取)矩形、椭圆选框工具 【M】移动工具 【V...
    墨雅丫阅读 3,890评论 0 0

友情链接更多精彩内容