百分比条形图视觉化效果

今天设计师给了这么一个效果图

     

 

 

主要是上面那个图,接下来开始:

数据由后台传来,用ajax获得,但是我决定先给他一个固定值,看看效果。

一开始的想法是:两个矩形,一个背景颜色为灰色,至于占用多少用第二个矩形占第一个矩形宽度的百分比表现出来。

1.首先把页面弄出来,初始状态是只有总数,已使用为0,所以首先给 第二个矩形的width:0%,后面通过所给的数据进行计算,转换成百分数,赋予#bar.style.width。

2.底部矩形分为四个区间,同时每一个区间对应一种颜色,用得到的数和四个区间进行比较,一开始是准备分4个if   直接比较然后给颜色,但是经同事提醒,用for()循环会更加简单

于是决定用for循环先和区间数组比较,,得到的数组下标,找出颜色数组对应的颜色即可。开始吧

 

一.首先是页面:

1 <body>
2     <div class="percent">
3            <div id="bar" style="width:0%;"></div>
4     </div>
5 </body>

CSS样式:

 1 .percent{
 2         width: 85px;
 3         height: 15px;
 4         margin: 100px auto;
 5         background: #868686;
 6     }
 7     #bar{
 8         
 9         height: 15px;
10     }

二 JS部分

 1 function run(){  
 2     var bar = document.getElementById("bar"); //获取div元素bar
 3    
 4     var a = 5;                             //总数
 5     var b = 1;                             //可用
 6     var c=Math.round((a-b)/a*100);         //因为除得的数(已使用)永远在0-1之间,想换成百分数,先乘以100,然后用math.round() 四舍五入取整
 7     console.log(c);                        //调试一下,看看得到的数对不对,再进行下一步
 8     var arrnum = [0,25,50,75];             //区间数组
 9     var arrcolor = ['#3ec13e','#e6d837','#f98e48','#eb3838'];   //颜色数组
10     for (var i = 0; i < arrnum.length; i++) {                   //for循环
11         if(c >arrnum[i]){                                       //比较
12             var flag = i;                        //将数组下标存到新变量,方便后面使用
13         }
14     }
15     console.log(arrcolor[flag]);                 //检查
16     bar.style.width=c+ "%";                      //给bar一个宽度
17     console.log(bar.style.width);            
18     
19     bar.style.background= "" + arrcolor[flag] + "";   //输出bar背景颜色
20     console.log("" + arrcolor[flag] + "")

三.效果图

没有问题了,然后放入动态数据

我在这里遇到的问题是,run()这个方法放到了window.onload中,数据还没到,这个方法就执行了,所以一直获取不到数据。要将run()放到

 success:function(data){  } 里,等待数据加载完成后再运行,以及定义了全局变量获取动态数据。

下图是修改完成后代码

总结:善用console.log()调试,看看得到什么结果,思考一下为什么会这样,造成这个错误的原因,然后想想怎么解决,多思考。以前基础不够扎实,数据类型要多了解。

          以及顺序真的很重要,要懂得JS的执行顺序,这样写起来能够得到减少很多错误。

 

posted @ 2017-09-13 17:51  脑袋空空空想家  阅读(1162)  评论(0编辑  收藏  举报