Home > Web Front-end > JS Tutorial > body text

Example of making a simple bar chart with jQuery_jquery

WBOY
Release: 2016-05-16 16:17:50
Original
1650 people have browsed it

The example in this article describes how to create a simple histogram with jQuery. Share it with everyone for your reference. The specific implementation method is as follows:

Html part:

Copy code The code is as follows:

Histogram







CSS part:

Copy code The code is as follows:
/*The following is the histogram style*/
.histogram-container{position:relative;margin-left:60px;margin-top:10px;margin-bottom:25px;}
.histogram-bg-line{border:#999 solid;border-width:0 0px 1px 1px;border-right-color:#eee;overflow:hidden;width:99%;}
.histogram-bg-line ul{overflow:hidden;border:#eee solid;border-width:1px 0 0 0;clear:both;}
.histogram-bg-line li{float:left;overflow:hidden;background:#fff;}
.histogram-bg-line li div{border-right:1px #eee solid;}
.histogram-content{position:absolute;left:0px;top:0;width:99%;height:100%;}
.histogram-content ul{height:100%;}
.histogram-content li{float:left;height:100%;text-align:center;position:relative;}
.histogram-box{position:relative;display:inline-block;height:100%;width:20px;}
.histogram-content li a{position:absolute;bottom:0;right:0;display:block;width:20px;font-size:0;line-height:0;}
.histogram-content li .histogram-name{position:absolute;bottom:-20px;left:0px;white-space:nowrap;display:inline-block;width:100%;font-size:12px;overflow:hidden; }
.histogram-y{position:absolute;left:-60px;top:-10px;font:12px/1.8 verdana,arial;}
.histogram-y li{text-align:right;width:55px;padding-right:5px;color:#333;}
.histogram-bg-line li div,.histogram-y li{height:30px;/*Control the height of the cell and the height of the percentage, so that the percentage and the line are aligned*/}

Js part:

Copy code The code is as follows:

$(function(){
var dataArr={
"data":[
{"id":1,"name":"Baidu","per":"10"},
{"id":2,"name":"Tencent","per":"20"},
{"id":3,"name":"Sina","per":"10"},
{"id":4,"name":"NetEase","per":"44"},
{"id":5,"name":"Sohu","per":"50"},
              {"id":5,"name":"Little Goby","per":"69"},
{"id":5,"name":"人人网","per":"72"},
{"id":5,"name":"iQiyi","per":"88"},
{"id":5,"name":"Qihoo 360","per":"92"},
{"id":5,"name":"Alibaba","per":"15"},
{"id":5,"name":"Alibaba","per":"10"}
] ]
};
new histogram().init(dataArr.data);
});

function histogram(){
var controls={};
var bgColor=new Array("#666666","#21AA7C","#2277BB","#dc7644","#BBAA22","#AA22AA","#338800","#1099EE","#ffcc33" ,"#ED3810");
This.init=function(data,y){
setControls();
        buildHtml(data,y);
}  
Function setControls(){
controls.histogramContainer=$("#histogram-container");
controls.histogramBgLineUL=controls.histogramContainer.children("div.histogram-bg-line");
controls.histogramContentUL=controls.histogramContainer.children("div.histogram-content");
controls.histogramY=controls.histogramContainer.children("div.histogram-y");
}  
Function buildHtml(data,y){
      var len=data.length,perArr=new Array(),maxNum,maxTotal,yStr='';
      var contentStr='',bgLineStr='',bgLineAll='';
var widthPer=Math.floor(100/len);
          minWidth=len*21 60; 
         controls.histogramContainer.css("min-width",minWidth "px");
                                                                            for(var a=0;a              perArr[a]=parseInt(data[a]['per']);                                                                                                                                                     maxNum=String(perArr.max());
If(maxNum.length>2){
            var x=parseInt(maxNum.substr(maxNum.length-2,1)) 1;  
               maxTotal=Math.floor(parseInt(maxNum/100))*100 x*10;
          }else{ 
                 maxTotal=Math.floor(parseInt(maxNum/10))*10 10;
                                                                                                                                                                                                       //y-axis part
If(y=="%"){
yStr ='
  • 100%
  • 80%
  • 60%
  • 40%
  • 0%
  • ';           }else{ 
                var avg=maxTotal/5;  
    for(i=5;i>=0;i--){
                    yStr ='
  • ' avg*i '
  • '; 
                } 
            } 
             
            //柱状条部分 
            for(var i=0;i             var per=Math.floor(parseInt(data[i]['per'])/maxTotal*100); 
                var n=Math.floor(parseInt(per)/10); 
                contentStr ='
  • '; 
                contentStr ='' data[i]['name'] ''; 
                contentStr ='
  • '; 
                bgLineStr ='
  • '; 
            } 
             
            //背景方格部分 
            for(var j=0;j<5;j ){ 
                bgLineAll ='
      ' bgLineStr '
    '; 
            } 
            bgLineAll='
    ' bgLineAll '
    '; 
            contentStr='
      ' contentStr '
    '; 
            yStr='
      ' yStr '
    '; 
            controls.histogramContainer.html(bgLineAll contentStr yStr); 
            controls.histogramContainer.css("height",controls.histogramContainer.height() "px");//主要是解决IE6中的问题       
        } 

    Array.prototype.max = function(){//最大值 
     return Math.max.apply({},this)  
    }

    希望本文所述对大家的jQuery程序设计有所帮助。

    Related labels:
    source:php.cn
    Statement of this Website
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
    Popular Tutorials
    More>
    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template