Html 实现动态显示颜色块的报表效果

利用html的颜色块动态展示数据

 1 <style type="text/css">
 2             *{
 3                 padding: 0;
 4                 margin: 0;
 5             }
 6             .tubiao,.jihua,.shiji,.riqi{
 7                 width: 100%;
 8                 overflow: hidden;
 9                 margin-top: 10px;
10             }
11             .left{
12                 width: 10%;
13                 float: left;
14                 text-align: center;
15                 height: 25px;
16                 line-height: 25px;
17             }
18             .right{
19                 width: 90%;
20                 float: right;
21                 height: 25px;
22             }
23             span {
24                 width: 5%;
25                 height: 100%;
26                 text-align: center;
27                 display: inline-block;
28             }
29         </style>
<body>
        <div class="tubiao">
            <div class="jihua">
                <div class="left">计划</div>
                <!--计划span存放的地方-->
                <div class="right plan"></div>
            </div>
            <div class="shiji">
                <div class="left">实际</div>
                <!--实际span存放的地方-->
                <div class="right act"></div>
            </div>
            <div class="riqi" id="day_id">
                <!--日期存放的地方-->
                <div class="right day"></div>
            </div>
        </div>
        <script type="text/javascript">
            var temp1="0-0.5-2-2-2-2-1-1";//计划耗时(块的单位宽度)
            var temp2="1-1-2-1-2-0-0-0";//实际耗时(块的单位宽度)            
            var temp3="5/19-5/20-5/21-5/22-5/23-5/24-5/25-5/26-5/27-5/28";//综合日期
            var temp=temp1+"~"+temp2+"~"+temp3;                
        
            var plan = document.getElementsByClassName("plan")[0];
            var act = document.getElementsByClassName("act")[0];
            var day = document.getElementsByClassName("day")[0];
            
            var num = 20;//创建多少个格
            
            load_first(temp);
            
            //分割数据和添加色块操作
            function load_first(temp){
                var demo=temp.split("~");
                var d1=demo[0].split("-");//计划耗时(块的单位宽度)数组
                var d2=demo[1].split("-");////实际耗时(块的单位宽度)数组
                var d3=demo[2].split("-");//综合日期数组
                for(var i=0;i<d3.length;i++){
                    time_span(d3[i]);
                }
                //alert("6:"+d1.length+"---"+"3:"+d2.length);
                //alert("d3.length:"+d3.length);
                for(var i=0;i<d1.length;i++){                
                    add_span(d1[i],d2[i],i);
                }
                document.getElementById("day_id").style.marginLeft="-30px"; 
                
            }            
            
            //新增颜色块,a为计划颜色块宽度,b为实际颜色块宽度
            function add_span(a,b,i){
                //创建span块
                var span1 = document.createElement("span");
                var span2 = document.createElement("span");
                //定义随机底色
                var spa = "rgba(" + rnd(0,255)+ "," + rnd(0,255)+ ","+ rnd(0,255)+ ","+ rnd(0.5,1) +")";//每一个颜色随机出来
                if(i==0){
                    span1.style.backgroundColor = "000000";
                    //clientWidth是对象看到的宽度(不含边线,即border)
                    span1.style.width = (plan.clientWidth/num*a) + "px";//计划的每一格的宽度
                    //插入节点span1至plan
                    plan.appendChild(span1);
                    span2.style.backgroundColor = "000000";
                    span2.style.width = (plan.clientWidth/num*b) + "px";//实际的每一格的宽度
                    act.appendChild(span2);
                }else{
                    //alert("a:"+a+"b:"+b+"i:"+i);
                    if(a=="0"){
                        span1.style.backgroundColor = "000000";    
                        span1.style.width = (plan.clientWidth/num*a) + "px";//计划的每一格的宽度
                        //插入节点span1至plan
                        plan.appendChild(span1);
                    }else{
                        span1.style.backgroundColor = spa;
                        //clientWidth是对象看到的宽度(不含边线,即border)
                        span1.style.width = (plan.clientWidth/num*a) + "px";//计划的每一格的宽度
                        //插入节点span1至plan
                        plan.appendChild(span1);
                    }
                    if(b=="0"){
                        span2.style.backgroundColor = "000000";
                        span2.style.width = (plan.clientWidth/num*b) + "px";//实际的每一格的宽度
                        act.appendChild(span2);                    
                    }else{
                        span2.style.backgroundColor = spa;
                        span2.style.width = (plan.clientWidth/num*b) + "px";//实际的每一格的宽度
                        act.appendChild(span2);
                    }                
                }
                
            }            
            
            //日期的数据插入
            function time_span(time){
                //创建span块
                var span = document.createElement("span");                
                span.style.width = (plan.clientWidth/num*1) + "px";//每一个span的宽度                
                span.innerHTML = "" + time;
                day.appendChild(span);
            }
            //随机函数
            function rnd(min,max){
                return Math.round(Math.random()*(max - min)+min);                
            }
            
            function QueryData() {
                var displayStyle = "1";
                $.ajax({
                    type: "post",
                    url: "Test.aspx",
                    dataType: "text",
                    data: { "DispalyStyle": displayStyle },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        alert(errorThrown + XMLHttpRequest.responseText);
                    },
                    success: function (json) {
                        try {
                            load_first(json);
                        }
                        catch (e) { }
                    }
                });
            }
            //QueryData();
        </script>
    </body>

 

posted on 2017-04-10 08:41  攻速鞋  阅读(904)  评论(0编辑  收藏  举报

导航