zoukankan      html  css  js  c++  java
  • 百分比条形图视觉化效果

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

         

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

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

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

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

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

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

    一.首先是页面:

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

    CSS样式:

     1 .percent{
     2          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的执行顺序,这样写起来能够得到减少很多错误。

  • 相关阅读:
    python_way day16 DOM
    python_way day15 HTML-DAY2、 回顾HTML-CSS 标签(css强制生效),JS(数据类型,时间处理,作用域)
    预习 jQuary
    python_way day14 CSS,莫泰对话框
    python_way day14 HTML
    php 连接mysql的问题
    python_way day13 paramiko
    List源码学习之LinkedList
    List源码学习之ArrayList
    Jasper之table报表
  • 原文地址:https://www.cnblogs.com/kido050313/p/7516285.html
Copyright © 2011-2022 走看看