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


Posted in Javascript onNovember 21, 2015

本文实例讲述了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程序设计有所帮助。

Javascript 相关文章推荐
js函数中onmousedown和onclick的区别和联系探讨
May 19 Javascript
JS下拉框内容左右移动效果的具体实现
Jul 10 Javascript
使用iframe window的scroll方法控制iframe页面滚动
Mar 05 Javascript
网页收藏夹显示ICO图标(代码少)
Aug 04 Javascript
关于javascript中dataset的问题小结
Nov 16 Javascript
Jquery中request和request.form和request.querystring的区别
Nov 26 Javascript
JS for...in 遍历语句用法实例分析
Aug 24 Javascript
jquery判断页面网址是否有效的两种方法
Dec 11 Javascript
JSONP基础知识详解
Mar 19 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
May 12 Javascript
微信网页登录逻辑与实现方法
Apr 29 Javascript
小程序实现录音功能
Sep 22 Javascript
js实现索引图片切换效果
Nov 21 #Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
Nov 21 #Javascript
javascript实现Email邮件显示与删除功能
Nov 21 #Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件包装
Nov 20 #Javascript
Jquery ajax基础教程
Nov 20 #Javascript
谈谈Jquery ajax中success和complete有哪些不同点
Nov 20 #Javascript
jQuery实现带玻璃流光质感的手风琴特效
Nov 20 #Javascript
You might like
在php MYSQL中插入当前时间
2008/04/06 PHP
php cli换行示例
2014/04/22 PHP
从零开始学YII2框架(三)扩展插件yii2-gird
2014/08/20 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
2014/10/27 PHP
javascript实现unicode和字符的互相转换
2007/07/18 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
checkbox勾选判断代码分析
2014/06/11 Javascript
js键盘事件的keyCode
2014/07/29 Javascript
jQuery使用addClass()方法给元素添加多个class样式
2015/03/26 Javascript
js当前页面登录注册框,固定div,底层阴影的实例代码
2016/10/04 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
简单理解js的prototype属性及使用
2016/12/07 Javascript
常见的浏览器存储方式(cookie、localStorage、sessionStorage)
2019/05/07 Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
2019/08/12 Javascript
Vue v-text指令简单使用方法示例
2019/09/19 Javascript
微信小程序纯文本实现@功能
2020/04/08 Javascript
jQuery弹框插件使用方法详解
2020/05/26 jQuery
[01:01:36]Optic vs paiN 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python self,cls,decorator的理解
2009/07/13 Python
python目录与文件名操作例子
2016/08/28 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
Python获取网段内ping通IP的方法
2019/01/31 Python
Python快速转换numpy数组中Nan和Inf的方法实例说明
2019/02/21 Python
Python-openCV读RGB通道图实例
2020/01/17 Python
使用python 计算百分位数实现数据分箱代码
2020/03/03 Python
python制作一个简单的gui 数据库查询界面
2020/11/19 Python
HTML5单页面手势滑屏切换原理分析
2017/07/10 HTML / CSS
详解HTML5将footer置于页面最底部的方法(CSS+JS)
2018/10/11 HTML / CSS
美国农场商店:Blain’s Farm & Fleet
2020/01/17 全球购物
C语言变量的命名规则都有哪些
2013/12/27 面试题
好的自荐信包括什么内容
2013/11/07 职场文书
三年级音乐教学反思
2014/01/28 职场文书
房屋租赁授权委托书范本
2014/09/20 职场文书
大学生村官工作总结2015
2015/04/09 职场文书
MySQL 开窗函数
2022/02/15 MySQL
一文搞清楚MySQL count(*)、count(1)、count(col)区别
2022/03/03 MySQL