这是我开发的时候遇到的一个问题:项目需要在步骤条(竖直方向)的另一侧加时间显示,但是我在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. vue中给请求来的数据List ,添加属性false 后,赋值不上问题解决办法

    data() { return { list:[ // 添加属性fale 后的值 ], // 测试数据 goList:[ { name:'张三', phone:'18621958665' }, { n ...

  2. Java模拟HttpClient进行Get和Post提交

    使用Java模拟客户端进行提交,需要用到apache http client jar,这里用的是4.4版本 GET: public void GetURL(){  String strResp=&qu ...

  3. 模仿JQuery封装ajax功能

    需求分析 因为有时候想提高性能,只需要一个ajax函数,不想引入较大的jq文件,尝试过axios,可是get方法不支持多层嵌套的json,post方式后台接收方式似乎要变..也许是我不太会用吧..其实 ...

  4. unittest接口自动化测试报告

    unittest接口自动化测试报告 展示: 代码: __author__ = "Wai Yip Tung, Findyou" __version__ = "0.8.2.1 ...

  5. sigmoid 和 soft-max总结

    1)sigmoid函数(也叫逻辑斯谛函数):  引用wiki百科的定义: A logistic function or logistic curve is a common “S” shape (si ...

  6. MySQL事务调优

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11429239.html 数据库事务 数据库事务是数据库系统执行过程中的一个逻辑处理单元,保证一个数据库 ...

  7. java基础学习笔记四(异常)

    Java中的异常 Exception 如图可以看出所有的异常跟错误都继承与Throwable类,也就是说所有的异常都是一个对象. 从大体来分异常为两块: 1.error---错误 : 是指程序无法处理 ...

  8. 【leetcode】907. Sum of Subarray Minimums

    题目如下: 解题思路:我的想法对于数组中任意一个元素,找出其左右两边最近的小于自己的元素.例如[1,3,2,4,5,1],元素2左边比自己小的元素是1,那么大于自己的区间就是[3],右边的区间就是[4 ...

  9. SQO2008配置管理工具服务显示远程过程调用失败0x800706be

    需要进行删除或更改程序里面,去卸载Microsoft SQL Server 2012 Express LocalDB就可以用了 如果还不可以看,看看是不是还有其它的占用了这个实例名 如: Micros ...

  10. python--MySql 表记录的操作

    表记录的增删改查 ---插入表记录 全列插入:insert into 表名 values(...) 缺省插入:insert into 表名(列1,...) values(值1,...) -- 插入一条 ...