这是我开发的时候遇到的一个问题:项目需要在步骤条(竖直方向)的另一侧加时间显示,但是我在element ui 的step组件中一直没找着设置方法,所以就自己想了个办法加进来,效果如下:

代码如下,先上HTML部分:

<div class="delate-step" v-if="detailContent.handle_list.length !==0">
  <span>处理环节:</span>
  <div style="width: 100%; height: 300px; padding-bottom: 40px; display: table;margin-top: 10px;">
    <div class="delate-step-lt">
      <div
        class="delate-time"
        :style="{'top': `${index*((300-46)/(detailContent.handle_list.length-1))+4}px`}"
        v-for="(item, index) in detailContent.handle_list"
        :key="index"
        >{{item.h_time}}</div>
      </div>
      <div class="delate-step-rt">
        <el-steps direction="vertical" :active="delate_result">
        <el-step
          v-for="(item, index) in detailContent.handle_list"
          :key="index"
          :title="item.department"
          :description="item.h_result==='null'?'':item.h_result"
        ></el-step>
      </el-steps>
    </div>
  </div>
</div>

然后是css部分:

.delate-step-lt {
width: 80px;
color: #818181;
font-size: 13px;
display: table-cell;
position: relative;
.delate-time {
position: absolute;
// &:first-child {
// top: 4px;
// }
// &:nth-child(2) {
// top: 80px;
// }
// &:nth-child(3) {
// top: 170px;
// }
// &:last-child {
// bottom: 24px;
// }
}
}
.delate-step-rt {
display: table-cell;
}

  

  现在说说实现过程吧:

  (1)首先先用一个大的div包裹在最外层,然后给它设置display:table属性,目的是让其下面的两个子div等高(两个子div需要设置display:table-cell属性)

  (2)然后将时间轴放左边的div中,需要给这个div设置一个属性position:relative,element ui的step组件放在右边的div中,这样就实现时间轴呈现在竖向step的另一侧了。

  (3)剩下的则是显示位置跟step 的 title 水平显示的问题了,先给每个显示的时间轴设置绝对定位属性position:absolute,一开始我想到的是使用css的伪类进行设置,如上css部分注释的代码,效果还行,但是后面想到我的step步骤数量是动态的,如果步骤数量发生了变化(变多或者变少),那么css设置的样式就没用了,所以这条路就走到尽头(不过若是固定步骤数量,直接这样设置是没问题的);后面想起来vue的样式绑定属性:style,于是就有了下面的计算:

:style="{'top': `${index*((300-46)/(detailContent.handle_list.length-1))+4}px`}"

// index --- 遍历出来的每个时间轴数据的下标

// 300 --- 整个step组件的高度(可以根据自己需要进行调整),

// 46 --- 是因为我设置了padding-bottom为46,所以减去这个值,

// detailContent.handle_list --- 时间轴数组,

// 4 --- 因为第一个是靠顶部显示的,多加4px是想让时间轴显示的位置下沉一点

计算过程:用步骤条的显示高度(300-46)除以detailContent.handle_list.length-1(因为第一个默认在top:0px的位置了,所以我们只需要计算剩下的detailContent.handle_list.length-1个时间轴数据显示的位置即可),这样就可以得到每个时间轴之间的间距,然后乘以每个时间轴下标,将乘的结果设置成每个时间轴div的top值,即可让时间轴按我们想要的结果进行显示了

// 这是我想到的一个解决方法,可能也会有些不对或者不足的地方,如果大家有什么更好的方法或者插件,可以指出来互相学习一下

element ui step组件在另一侧加时间轴显示的更多相关文章

  1. [转]vue Element UI走马灯组件重写

    https://blog.csdn.net/u013750989/article/details/82885482 1.element ui走马灯组件 -- carousel分析一波源代码:carou ...

  2. 封装一个优雅的element ui表格组件

    现在做后台系统用vue + elementUI 的越来越多,那element ui的 el-table 组件肯定也离不开.虽然element ui的table组件很好.但是表格和分页是分离的.每次写表 ...

  3. 普通element ui table组件的使用

    1.使用基础的element ui 的table的基础使用 首先,使用前要先引用element库到项目中,可以直接引入element的js和css或者在vue项目下按需加载不同的组件 废话不多说,直接 ...

  4. Element UI table组件源码分析

    本文章从如下图所示的最基本的table入手,分析table组件源代码.本人已经对table组件原来的源码进行削减,源码点击这里下载.本文只对重要的代码片段进行讲解,推荐下载代码把项目运行起来,跟着文章 ...

  5. Element UI表格组件技巧:如何简洁实现跨页勾选、跨页统计功能

    业务场景 在使用Element UI的Table组件时,常常面对这样的业务需求: 表格数据的每一项都要提供勾选框,当切换分页时,能够记忆所有页面勾选的数据,以实现批量提交不同页面勾选数据的功能.并且, ...

  6. Element UI 中组件this.$message报错

    最近在做毕设的时候,用Element UI中的消息提示message一直报以下的错误: 展示的效果也不好看,没有图标什么的: 但我明明有在main.js引入了element-ui 呀,因为毕设时间很赶 ...

  7. Vue + Element UI 实现权限管理系统(动态加载菜单)

    动态加载菜单 之前我们的导航树都是写死在页面里的,而实际应用中是需要从后台服务器获取菜单数据之后动态生成的. 我们在这里就用上一篇准备好的数据格式Mock出模拟数据,然后动态生成我们的导航菜单. 接口 ...

  8. element UI datepicker组件限制可选日期范围

    长话短说,简单粗暴上代码了,在element中的datepicker,可以自由选择日期,如下: 然后我们根据element 官网的文档,给datepicker组件动态改变 picker-options ...

  9. element ui table组件自定义合计栏,后台给的数据

    合计的数据是后台传的,所以用table组件自定义一行用来合计 <el-table border fit v-loading.body="listLoading" elemen ...

随机推荐

  1. 第一节 初识RabbitMQ

    原文:第一节 初识RabbitMQ 版权声明:未经本人同意,不得转载该文章,谢谢 https://blog.csdn.net/phocus1/article/details/87280120 1.什么 ...

  2. Java8 Stream流API常用操作

    Java版本现在已经发布到JDK13了,目前公司还是用的JDK8,还是有必要了解一些JDK8的新特性的,例如优雅判空的Optional类,操作集合的Stream流,函数式编程等等;这里就按操作例举一些 ...

  3. shell函数的定义和调用

  4. java集合类笔试选择题整理含答案

    1.ArrayList list=new ArrayList(20);中的list扩充几次()A. 0B. 1C. 2D. 3答案:A分析:已经指定了长度, 所以不扩容 2.List.Set.Map哪 ...

  5. 生成token

    利用中间件生成token 1.安装中间件 npm install jsonwebtoken 2. 使用 Sign() 里面有3个参数,第一个是token里面传递的数据    ,第二个是 key ,第三 ...

  6. 容器和Docker

    一.容器 1.虚拟机和容器的区别 (1)为什么要用docker 服务器端开发/部署: 实现更轻量级的虚拟化,方便快速部署, 对于部署来说可以极大的减少部署的时间成本和人力成本 Docker支持将应用打 ...

  7. OC学习篇之---类的三大特性(封装,继承,多态)

    之前的一片文章介绍了OC中类的初始化方法和点语法的使用:http://blog.csdn.net/jiangwei0910410003/article/details/41683873,今天来继续学习 ...

  8. BN和正则化一起使用的后果

    就是因为 batch norm 过后, weight 影响没那么重了,所以 l2 weight decay 的效果就不明显了. 证明了L2正则化与归一化相结合时没有正则化效应.相反,正则化会影响权重的 ...

  9. MySQL(关系型数据库管理系统)

    MySQL 关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的 RDBMS ...

  10. 探索Redis设计与实现13:Redis集群机制及一个Redis架构演进实例

    本文转自互联网 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial ...