javascript实现动态统计图开发实例

 更新时间:2015年11月21日 15:02:46   投稿:lijiao  
这篇文章主要介绍了javascript实现动态统计图开发实例,需要的朋友可以参考下

本文实例讲述了javascript实现动态统计图的代码。分享给大家供大家参考。具体如下:
运行效果截图如下:

具体代码如下
html代码:

<div id="content">
    <div class="legend">
    <h1>汽车销量:</h1>
    <div class="skills">
    <ul>
    <li class="jq">大众</li>
    <li class="css">丰田</li>
    <li class="html">别克</li>
    <li class="php">福特</li>
    <li class="sql">长安</li>
    </ul>
    </div>
    </div>
    <div id="diagram"></div>
    </div>
    <div class="get">
    <div class="arc">
    <span class="text">大众</span>
    <input type="hidden" class="percent" value="95" />
    <input type="hidden" class="color" value="#97BE0D" />
    </div>
    <div class="arc">
    <span class="text">丰田</span>
    <input type="hidden" class="percent" value="90" />
    <input type="hidden" class="color" value="#D84F5F" />
    </div>
    <div class="arc">
    <span class="text">别克</span>
    <input type="hidden" class="percent" value="80" />
    <input type="hidden" class="color" value="#88B8E6" />
    </div>
    <div class="arc">
    <span class="text">福特</span>
    <input type="hidden" class="percent" value="53" />
    <input type="hidden" class="color" value="#BEDBE9" />
    </div>
    <div class="arc">
    <span class="text">长安</span>
    <input type="hidden" class="percent" value="45" />
    <input type="hidden" class="color" value="#EDEBEE" />
    </div>
    </div>

css代码:

#content {
position:absolute;
top:50%;
left:50%;
margin:-340px 0 0 -450px;
width:900px;
height:600px;
}
.legend {
float:left;
width:250px;
margin-top:140px;
}
#content h1 {
font-family:'Cabin Sketch', arial, serif;
text-shadow:3px 3px 0 #ddd;
color:#193340;
font-size:40px;
margin-bottom:40px;
text-align:right;
}
.skills {
float:left;
clear:both;
width:100%;
}
.skills ul,
.skills li {
display:block;
list-style:none;
margin:0;
padding:0;
}
.skills li {
float:right;
clear:both;
padding:0 15px;
height:35px;
line-height:35px;
color:#fff;
margin-bottom:1px;
font-size:18px;
}

js代码:

var o = {
      init: function () {
        this.diagram();
      },
      random: function (l, u) {
        return Math.floor((Math.random() * (u - l + 1)) + l);
      },
      diagram: function () {
        var r = Raphael('diagram', 600, 600),
          rad = 73;
        r.circle(300, 300, 85).attr({ stroke: 'none', fill: '#193340' });
        var title = r.text(300, 300, 'loading...').attr({
          font: '20px Arial',
          fill: '#fff'
        }).toFront();
        r.customAttributes.arc = function (value, color, rad) {
          var v = 3.6 * value,
            alpha = v == 360 ? 359.99 : v,
            random = o.random(91, 240),
            a = (random - alpha) * Math.PI / 180,
            b = random * Math.PI / 180,
            sx = 300 + rad * Math.cos(b),
            sy = 300 - rad * Math.sin(b),
            x = 300 + rad * Math.cos(a),
            y = 300 - rad * Math.sin(a),
            path = [['M', sx, sy], ['A', rad, rad, 0, +(alpha > 180), 1, x, y]];
          return { path: path, stroke: color }
        }
        $('.get').find('.arc').each(function (i) {
          var t = $(this),
            color = t.find('.color').val(),
            value = t.find('.percent').val(),
            text = t.find('.text').text();
          rad += 30;
          var z = r.path().attr({ arc: [value, color, rad], 'stroke-width': 26 });
          z.mouseover(function () {
            this.animate({ 'stroke-width': 50, opacity: .75 }, 1000, 'elastic');
            if (Raphael.type != 'VML') //solves IE problem
    this.toFront();
            title.animate({ opacity: 0 }, 500, '>', function () {
              this.attr({ text: text + '\n' + value + '%' }).animate({ opacity: 1 }, 500, '<');
            });
          }).mouseout(function () {
            this.animate({ 'stroke-width': 26, opacity: 1 }, 1000, 'elastic');
          });
        });
      }
    }
    $(function () { o.init(); });

希望本文所述对大家学习javascript程序设计有所帮助。

相关文章

  • 使用localStorage替代cookie做本地存储

    使用localStorage替代cookie做本地存储

    这篇文章主要为大家详细介绍了使用localStorage替代cookie做本地存储,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • JavaScript中数组Array方法详解

    JavaScript中数组Array方法详解

    本文主要介绍了JavaScript中数组Array方法的相关知识,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • DOM_window对象属性之--clipboardData对象操作代码

    DOM_window对象属性之--clipboardData对象操作代码

    clipboardData 对象提供了对于预定义的剪贴板格式的访问,以便在编辑操作中使用。
    2011-02-02
  • js使用Canvas将多张图片合并成一张的实现代码

    js使用Canvas将多张图片合并成一张的实现代码

    这篇文章主要介绍了js使用Canvas将多张图片合并成一张的实现代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • js parseInt的陷阱分析小结

    js parseInt的陷阱分析小结

    js parseInt的陷阱分析小结,当第一个字符为0时,Js会把它看成一个8进制数字,其他8进制之外的字符都回被忽略掉。
    2011-03-03
  • 浅谈js中的闭包

    浅谈js中的闭包

    闭包是一个比较抽象的概念,尤其是对js新手来说.书上的解释实在是比较晦涩,对我来说也是一样.闭包是很多语言都具备的特性,在js中,闭包主要涉及到js的几个其他的特性:作用域链,垃圾(内存)回收机制,函数嵌套,等等.
    2015-03-03
  • bootstrap日期插件daterangepicker使用详解

    bootstrap日期插件daterangepicker使用详解

    这篇文章主要为大家详细介绍了bootstrap日期插件daterangepicker的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • 利用Echarts实现图例显示百分比效果

    利用Echarts实现图例显示百分比效果

    EChart开源来自百度商业前端数据可视化团队,基于html5 Canvas,是一个纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。本文将利用EChart实现图例中显示百分比的效果,感兴趣的可以学习一下
    2022-03-03
  • JavaScript逆向分析instagram登入过程

    JavaScript逆向分析instagram登入过程

    这篇文章主要介绍了JavaScript逆向分析instagram登入过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • JavaScipt验证URL新方法详解(2023 年版)

    JavaScipt验证URL新方法详解(2023 年版)

    这篇文章主要为大家介绍了JavaScipt验证URL新方法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12

最新评论