【基于react使用html标签模拟echarts的条形图】

需要实现条形图,而使用echarts又比较麻烦时,可以使用html标签模拟一个条形图,

核心代码如下:

{
    newData.map((v, i) => (
        <div key={i}>
            <span className="left">
                <span className="typeName">
                    {v.typeName}
                </span>
                <span className="count">
                    {v.count}
                </span>
             </span>
             <span>
                <span
                    className="process"
                    style={{ width: v.count / 700 * 20 > 200 ? 200 + 'px' : v.count / 700 * 20 + 'px', backgroundColor: '#3D8CFF' }}
                />
                <span
                    className="process"
                    style={{ width: 200 + 'px', backgroundColor: '#EBECF0', zIndex: 1 }}
                />
                </span>
            </div>
    ))
}

数据格式

const newData = [{
        typeName: 'html模拟echarts的条形图',
        count: 11580
      }, {
        typeName: 'html模拟echarts的条形图',
        count: 7000
      }, {
        typeName: 'html模拟echarts的条形图',
        count: 6000
      }, {
        typeName: 'html模拟echarts的条形图',
        count: 5090
      }, {
        typeName: 'html模拟echarts的条形图',
        count: 4358
      }, {
        typeName: 'html模拟echarts的条形图',
        count: 3640
      }, {
        typeName: 'html模拟echarts的条形图',
        count: 2500
      }, {
        typeName: 'html模拟echarts的条形图',
        count: 1790
      }, {
        typeName: 'html模拟echarts的条形图',
        count: 890
      }, {
        typeName: 'html模拟echarts的条形图',
        count: 800
      }];

数据格式为:一个属性是y轴的名称,一个属性是x轴的数值

less文件:

.pod{
    position: relative;
    height: 200px;
    margin-top: 54px;
    margin-left: 16px;
    overflow-y: auto;
    & .left{
        display: inline-flex;
        justify-content: space-between;
        width: 200px;
        & .typeName{
            display: inline-block;
            margin-bottom: 12px;
            color: #4A4D55;
            font-weight: 400;
            font-size: 12px;
            font-family: PingFangSC-Regular, PingFang SC;
        }
        & .count{
            color: #888C99;
            font-weight: 500;
            font-size: 12px;
            font-family: Rubik-Medium, Rubik;
        }
    }
    & .process{
        position: absolute;
        z-index: 10;
        display: inline-block;
        height: 11px;
        margin-top: 4px;
        margin-left: 8px;
        vertical-align: middle;
        background: #8FC3FF;
        border-radius: 6px;
        transition: all 0.3s ease-in-out;
    }
}

其中pod是包裹整个条形图的父容器

效果图:

根据实际情况而定,可以有滚动条, 最大宽度根据实际情况而定。柱子的长度计算而出

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值