美文网首页
CSS实现一个简单的拓扑图

CSS实现一个简单的拓扑图

作者: 麦西的西 | 来源:发表于2020-03-03 17:19 被阅读0次

  有时候会需要实现简单的拓扑图。如果是简单的一对多的关系,可以使用CSS实现。比如需要实现以下效果:


效果图.jpg

具体思路是:

  1. 先把所有节点写出来
  2. 通过给节点加absolute布局的div来加上连接线
  3. 通过给节点加absolute布局的div来加上箭头

完整代码如下(vue文件):

<template>
  <div class="home">
    <div class="flex-column left">
      <div class="node left-node" v-for="(item, index) in leftList" :key="'left' + index">{{item}}</div>
    </div>
    <div class="flex-column center">
      <div class="node center-node">
        {{center}}
        <div class="arrow"></div>
      </div>
    </div>
    <div class="flex-column right">
      <div class="node right-node" v-for="(item, index) in rightList" :key="'right' + index">
        {{item}}
        <div class="arrow"></div>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  name: "Home",
  data() {
    return {
      leftList:['left1', 'left2', 'left3'],
      center: 'center',
      rightList: ['right1', 'right2', 'right3', 'right4']
    };
  }
};
</script>
<style lang="scss" scoped>
.home {
  display: flex;
  justify-content: flex-start;
  .left {
    .left-node {
      position: relative;
      &:before {
        content: '';
        position: absolute;
        top: 25px;
        left: 160px;
        width: 60px;
        height: 2px;
        background: #3385ff;
      }
      &:after {
        content: '';
        position: absolute;
        top: 25px;
        right: -60px;
        width: 2px;
        height: 100px;
        background: #3385ff;
      }
      &:last-of-type {
        &:after {
          display: none;
        }
      }
    }
  }
  .center {
    margin-left: 120px;
    .center-node {
      position: relative;
      &:before {
        content: '';
        position: absolute;
        top: 25px;
        right: 160px;
        width: 60px;
        height: 2px;
        background: #3385ff;
      }
      &:after {
        content: '';
        position: absolute;
        top: 25px;
        left: 160px;
        width: 60px;
        height: 2px;
        background: #3385ff;
      }
    }
  }
  .right {
    margin-left: 120px;
    .right-node {
      position: relative;
      &:before {
        content: '';
        position: absolute;
        top: 25px;
        right: 160px;
        width: 60px;
        height: 2px;
        background: #3385ff;
      }
      &:after {
        content: '';
        position: absolute;
        top: 25px;
        left: -60px;
        width: 2px;
        height: 100px;
        background: #3385ff;
      }
      &:last-of-type {
        &:after {
          display: none;
        }
      }
    }
  }
  // 箭头(小三角形)公共样式
  .arrow {
    position: absolute;
    top: 18px;
    right: 150px;
    width: 0;
    height: 0;
    border: 8px solid #3385ff;
    border-color: transparent transparent transparent #3385ff;
  }
  // flex-column公共样式
  .flex-column {
    display: flex;
    flex-direction: column;
    justify-content: center;
  }
  // 节点公公样式
  .node {
    margin-top: 50px;
    width: 160px;
    height: 50px;
    line-height: 50px;
    color: #fff;
    background: #3385ff;
  }
}
</style>

相关文章

  • CSS实现一个简单的拓扑图

      有时候会需要实现简单的拓扑图。如果是简单的一对多的关系,可以使用CSS实现。比如需要实现以下效果: 具体思路是...

  • css3实现图片横向无缝滚动的效果

    之前实现无缝滚动大多结合js,如今有了css3,就简单多了。HTML: CSS: 另外一个例子: 用CSS3实现无...

  • 清除浮动的几种常用方法

    CSS中的浮动简单介绍 浮动是CSS中的一个属性float来实现的,通过设置属性值left、right来实现元素的...

  • 2018-11-04

    一点简单的CSS动画(CSS实现) 图片展开: (transition和transform结合实现的) HTML部...

  • 正方体旋转css简单实现

    正方体旋转 简单css实现

  • nginx反向代理+mysql+php技巧

    简单的拓扑图 架构:前端Nginx可以部署静态文件(后期实现静态分离),动态请求全部用反向代理 proxy_pas...

  • CSS之过渡transition

    CSS的过渡属性transition可以仅通过CSS来实现简单的动画效果,同时它是一个简写属性,由transiti...

  • JTopo实现拓扑图

    实现拓扑图有很多方法,这里介绍Jtopo这个工具。 学习工具类,先看API。 这里可以看出,API很简单。 JTO...

  • css3 加载loading图标实现

    就是这样的一个css3实现。 对,代码就是这么简单。 厉害不?

  • css 实现矩形四个边角加粗

    1、工具/原料 html css 2、具体实现 html代码 css代码 原理很简单, 只要弄清position:...

网友评论

      本文标题:CSS实现一个简单的拓扑图

      本文链接:https://www.haomeiwen.com/subject/irdhlhtx.html