div+css画漏斗图

需求:系统需要画一个漏斗图,需要对漏斗进行各行操作并且每行留出空格,通过某些操作需要进行部分漏斗的隐藏。需求比较复杂,虽然echarts提供的漏斗图很方便,但是操作起来比较困难,所以选用div+css。

思路:采用无高度div,通过动态传入设置div的border-top、border-left、border-right来完成梯形四边形,采用上下叠加的方式完成漏斗图。其中类似border-top,在vue的标签中应写成borderTop,上边框设为50px,左右边框之和为当前div宽度与下一个div宽度差值,并设为无色,则可完成漏斗图。。

<div class="grid-content"  v-for="(item , cuIndex) in customerOverview" :key="cuIndex">
<div class="funnelChart"  
 :style="{width:item.funnleWidth+'px',
  borderTop:' 50px solid '+funnleColor[cuIndex+1],
  borderLeft:item.nextWidth+'px solid transparent', 
  borderRight: item.nextWidth+'px solid transparent'}">
</div>
</div>
<style>
.funnelChart{
  height: 0;
}
</style>

动态数据如下:

funnleColor: ['#3C6EF0', '#2CA6E1', '#26A872', '#FFBA12', '#FF6E4C', '#E1251B'],
customerOverview:[
{funnleWidth: 265, nextWidth: 10},
{funnleWidth: 245, nextWidth: 20},
{funnleWidth: 205, nextWidth: 30},
{funnleWidth: 145, nextWidth: 20},
{funnleWidth: 105, nextWidth: 20},
{funnleWidth: 65, nextWidth: 32.5},
]

效果图

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值