最近业务中遇到一个有意思的需求,是要在现有的表格中实现类似 Excel 中的数据条的效果,在数据比较多的时候单纯看表格里的数字会比较密集且不容易对比,加上数据条之后就比较明
最近业务中遇到一个有意思的需求,是要在现有的表格中实现类似 Excel 中的数据条的效果,在数据比较多的时候单纯看表格里的数字会比较密集且不容易对比,加上数据条之后就比较明显的看出数据的对比情况,也让表格看起来生动了一些,这算是融合了表格和柱状图的优点。 先来看下 Excel 的效果 下面记录下实现过程和原理。 需求分析通过图片可以看出共有几种情况:
实现逻辑实现这个效果的前提,我们要知道每列数据的最大值max和最小值min,最大值的数据条宽度就是100%,下面先用伪代码梳理下逻辑。 全是正值和全是负值的情况,这种情况就比较简单了,就是计算单元格的值占最大值的比例,计算公式是这样:数据条宽度 = (当前值 / max) * 100 正负值都有的情况多了一个“轴线位置“的计算和”数据条偏移量“计算
轴线位置逻辑其实是 "最小值到0的距离在总长度(max-min)之间的占比",我们知道数字与0之间的距离其实就是绝对值的计算,那么转换为公式来表示就是: 数据条的宽度就是 “当前值到0的距离在总长度(max-min)之间的占比”,公式表示:
完整代码实现
template 部分
style 部分先放 style 部分是为了让大家对基础样式有个感受,渲染函数中主要就是动态修改元素的 width、left、right 的值
script 部分
最终实现效果 |
2021-06-04
2019-01-10
2019-02-17
2021-09-12
2021-09-30