vue柱状进度条图像的完美实现方案

前言

本文是对bar进度条实现的2种方案进行分享,第一种是很简单,纯css的实现,第二种是echart的实现。

css的实现

css实现很简单。代码如下:

<template>
 <div class=\"haoroomflex\">
  <div v-for=\"(item,index) in barData\" :key=\"index\" class=\"onebar\">
   <div class=\"bar\">
    <span class=\"progress\" :style=\"{\'height\':`${item.value*100}%`}\" />
   </div>
   <div class=\"sfont\">{{ item.date }}</div>
  </div>

 </div>
</template>
<script>

export default {
 props: {
  barData: {
   type: Array,
   default() {
    return [
     { date: \'\', value: 0 },
     { date: \'\', value: 0 },
     { date: \'\', value: 0 }
    ]
   }
  }
 }

}
</script>
<style rel=\"stylesheet/scss\" lang=\"scss\" scoped>
.haoroomflex{display: flex;margin:0 15px;}
.onebar{
 flex:1;
 text-align: center;
 min-width: 30px;
 max-width: 100px;
 display: inline-block;
 .sfont{
  color:#999;
  font-size:14px;
 }
 .bar{
  height: 160px;
  width:24px;
  margin:5px auto;
  -webkit-border-radius: 24px;
  border-radius: 24px;
  overflow: hidden;
  position: relative;
  background: #e5e5e5;
  span.progress {
   position: absolute;
   bottom:0;
   height: 0;
   width: 100%;
   display: block;
   -webkit-border-radius: 24px;
   border-radius: 24px;
   -webkit-transition: height 2s ease-out;
   -o-transition: height 2s ease-out;
   transition: height 2s ease-out;
   background: #3990FF

  }
 }
}
</style>

效果如下

vue柱状进度条图像的完美实现方案 

echart实现

<template>
 <div class=\"linechartWrap\">
  <v-chart class=\"barchart\" :options=\"options\" autoresize />
 </div>
</template>

<script>
import ECharts from \'vue-echarts\'
import \'echarts/lib/chart/bar\'
import \'echarts/lib/component/tooltip\'
import \'echarts/lib/component/title\'
import \'echarts/lib/component/toolbox\'

export default {
 components: {
  \'v-chart\': ECharts
 },
 props: {
  barData: {
   type: Object,
   default() {
    return {
     data: [11, 33, 77],
     title: [\'07-01\', \'07-02\', \'07-03\']
    }
   }
  }
 },
 computed: {
  options() {
   return {
    grid: {
     show: \'true\',
     borderWidth: \'0\',
     height: \'72%\',
     width: \'90%\',
     x: \'12%\',
     y: \'20%\'
    },
    tooltip: {
     trigger: \'axis\',
     axisPointer: {
      type: \'none\'
     },
     formatter: \'{b0}: {c0}%\'
    /* formatter: function(params) {
      var result = \'\';
      params.forEach(function (item) {
        result += item.marker + \" \" + item.seriesName + \" : \" + item.value +\"</br>\";
      });
      return result;
    }*/
    },
    backgroundColor: \'#fff\', // 背景色
    yAxis: {
     show: false, // 是否显示x轴
     type: \'value\'
    },
    xAxis: {
     type: \'category\',
     axisLabel: {
      show: true,
      textStyle: {
       color: \'#666\' // y轴字体颜色
      }
     },
     splitLine: { show: false }, // 横向的线
     axisTick: { show: false }, // y轴的端点
     axisLine: { show: false }, // y轴的线
     data: this.barData.title
    },
    series: [
     {
      type: \'bar\',
      itemStyle: {
       normal: {
        barBorderRadius: 25,
        color: \'#3990FF\'
       }
      },
      barWidth: 25,
      data: this.barData.data
     },
     {
      name: \'外框\',
      type: \'bar\',
      itemStyle: {
       normal: {
        barBorderRadius: 25,
        color: \'#e5e5e5\' // rgba设置透明度0.14
       }
      },
      barGap: \'-100%\',
      z: 0,
      barWidth: 25,
      data: [100, 100, 100]
     }
    ]
   }
  }
 }

}
</script>

代码地址

代码已经上传github,地址是: https://github.com/confidence68/bar_precent_css

以上所述是小编给大家介绍的vue柱状进度条图像的完美实现方案,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容