实现效果如下:

point1.jpeg
即使每一项有很多行,也可以做到居中对齐。
point2.jpeg

实现:

整体分为两个部分,一个是垂直居中的小圆点,一个是垂直连接原点的竖线。

1、小圆点部分

通过 给每一项的div加上position:relative + 在每一项的:before伪类中添加

  1. position: absolute;
  2. border-radius: 50%;
  3. width: 4px;
  4. height: 4px;
  5. background: #E6E6E6;
  6. content: '';

可以得到三个小圆点,然后再通过

  1. top: 50%;
  2. left: 0;
  3. transform: translateY(-50%);

来进行垂直居中。
(⤴️垂直居中的原理为,top: 50%是相对与父类的高度的,也就是说这个点的顶部处在中心点。而transform: translateY(-50%)的百分比是相对于自身的高度的,也就是将这个圆向上推了一半,所以圆的中心就正好处在中心点了)
整体代码为:

  1. .explain-left-first:before, .explain-left-second:before, .explain-left-third:before {
  2. position: absolute;
  3. top: 50%;
  4. left: 0;
  5. transform: translateY(-50%);
  6. border-radius: 50%;
  7. width: 4px;
  8. height: 4px;
  9. background: #E6E6E6;
  10. content: '';
  11. }

2、竖线部分

竖线部分就比较笨拙了,也是使用的伪类,这次是:after,使用absolute进行定位,图上的三个的具体实现为:

  1. .explain-left-first:after {
  2. position: absolute;
  3. bottom: 0;
  4. left: 1px;
  5. width: 2px;
  6. height: 50%;
  7. background: #E6E6E6;
  8. content: '';
  9. }
  10. .explain-left-second:after {
  11. position: absolute;
  12. bottom: 0;
  13. left: 1px;
  14. width: 2px;
  15. height: 100%;
  16. background: #E6E6E6;
  17. content: '';
  18. }
  19. .explain-left-third:after {
  20. position: absolute;
  21. top: 0;
  22. left: 1px;
  23. width: 2px;
  24. height: 50%;
  25. background: #E6E6E6;
  26. content: '';
  27. }