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 相关文章推荐
用Javascript做flash做的事..才完成的一个类.Auntion Action var 0.1
Feb 23 Javascript
onclick与listeners的执行先后问题详细解剖
Jan 07 Javascript
js调试系列 控制台命令行API使用方法
Jun 18 Javascript
js调试系列 源码定位与调试[基础篇]
Jun 18 Javascript
js字符串完全替换函数分享
Dec 03 Javascript
通过javascript进行UTF-8编码的实现方法
Jun 27 Javascript
用jQuery向div中添加Html文本内容的简单实现
Jul 13 Javascript
EasyUI为Numberbox添加blur事件的方法
Mar 05 Javascript
JavaScript判断日期时间差的实例代码
Mar 01 Javascript
JS实现电话号码的字母组合算法示例
Feb 26 Javascript
vue实现在线预览pdf文件和下载(pdf.js)
Nov 26 Javascript
vue中如何添加百度统计代码
Dec 19 Vue.js
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
阿拉伯的咖啡与水烟
2021/03/03 咖啡文化
php 从数据库提取二进制图片的处理代码
2009/09/09 PHP
zend framework多模块多布局配置
2011/02/26 PHP
解析PHP实现多进程并行执行脚本
2013/06/18 PHP
PHP中常用的转义函数
2014/02/28 PHP
用PHP的反射实现委托模式的讲解
2019/03/22 PHP
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
Javascript获取窗口(容器)的大小及位置参数列举及简要说明
2012/12/09 Javascript
JQuery表格内容过滤的实现方法
2013/07/05 Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
2014/01/02 Javascript
window.showModalDialog()返回值的学习心得总结
2014/01/07 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
走进AngularJs之过滤器(filter)详解
2017/02/17 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
xmlplus组件设计系列之图标(ICON)(1)
2017/05/05 Javascript
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
security.js实现的RSA加密功能示例
2018/06/06 Javascript
JS实现简单随机3D骰子
2019/10/24 Javascript
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
2015/04/05 Python
Python如何通过subprocess调用adb命令详解
2017/08/27 Python
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
Django的HttpRequest和HttpResponse对象详解
2018/01/26 Python
Python 实现选择排序的算法步骤
2018/04/22 Python
解决Python设置函数调用超时,进程卡住的问题
2019/08/08 Python
pytorch实现mnist分类的示例讲解
2020/01/10 Python
小学生红领巾广播稿
2014/01/21 职场文书
初中班主任评语大全
2014/04/24 职场文书
人力资源管理毕业求职信
2014/08/05 职场文书
户籍证明格式
2014/09/15 职场文书
学习朴航瑛老师爱岗敬业先进事迹思想汇报
2014/09/17 职场文书
锦旗赠语
2015/06/23 职场文书
新闻稿件写作技巧
2015/07/18 职场文书
新店开业策划方案怎么书写?
2019/07/05 职场文书
微信小程序scroll-view不能左右滑动问题的解决方法
2021/07/09 Javascript
Python日志模块logging用法
2022/06/05 Python
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技