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 相关文章推荐
让网页根据不同IE版本显示不同的内容
Feb 08 Javascript
从盛大通行证上摘下来的身份证验证js代码
Jan 11 Javascript
js检查页面上有无重复id的实现代码
Jul 17 Javascript
jquery动态添加删除(tr/td)
Feb 09 Javascript
js结合正则实现国内手机号段校验
Jun 19 Javascript
jQuery焦点图插件SaySlide
Dec 21 Javascript
你有必要知道的10个JavaScript难点
Jul 25 Javascript
VUE DOM加载后执行自定义事件的方法
Sep 07 Javascript
使用RN Animated做一个“添加购物车”动画的方法
Sep 12 Javascript
VuePress 中如何增加用户登录功能
Nov 29 Javascript
H5 js点击按钮复制文本到粘贴板
Nov 19 Javascript
uniapp开发小程序实现滑动页面控制元素的显示和隐藏效果
Dec 10 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
一个没有MYSQL数据库支持的简易留言本的编写
2006/10/09 PHP
海河写的 Discuz论坛帖子调用js的php代码
2007/08/23 PHP
有关 PHP 和 MySQL 时区的一点总结
2008/03/26 PHP
php smarty 二级分类代码和模版循环例子
2011/06/16 PHP
php class类的用法详细总结
2013/10/17 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
2015/11/05 PHP
php 无限分类 树形数据格式化代码
2016/10/11 PHP
解决php-fpm.service not found问题的办法
2017/06/06 PHP
phpstorm 正则匹配删除空行、注释行(替换注释行为空行)
2018/01/21 PHP
仿百度输入框智能提示的js代码
2013/08/22 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
jQuery子元素过滤选择器用法示例
2016/09/09 Javascript
简单理解Vue条件渲染
2016/12/03 Javascript
Bootstrap进度条学习使用
2017/02/09 Javascript
深入浅析Vue中的Prop
2018/06/10 Javascript
JavaScript实现与使用发布/订阅模式详解
2019/01/19 Javascript
详解js动态获取浏览器或页面等容器的宽高
2019/03/13 Javascript
axios解决高并发的方法:axios.all()与axios.spread()的操作
2020/11/09 Javascript
Scrapy框架CrawlSpiders的介绍以及使用详解
2017/11/29 Python
Python正则表达式和re库知识点总结
2019/02/11 Python
Django Session和Cookie分别实现记住用户登录状态操作
2020/07/02 Python
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
CSS类名支持中文命名的示例
2014/04/04 HTML / CSS
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
英国香水店:The Perfume Shop
2017/03/27 全球购物
FC-Moto丹麦:欧洲最大的摩托车服装和头盔商店之一
2019/08/20 全球购物
惠而浦美国官网:Whirlpool.com
2021/01/19 全球购物
值传递还是引用传递
2015/02/08 面试题
高三自我鉴定
2013/10/23 职场文书
测绘工程系学生的自我评价
2013/11/30 职场文书
小学生家长评语大全
2014/02/10 职场文书
《猴子种树》教学反思
2014/02/14 职场文书
《再见了,亲人》教学反思
2014/02/26 职场文书
学校募捐倡议书
2014/05/14 职场文书
教师党员公开承诺事项
2014/05/28 职场文书
六年级小学生评语
2014/12/26 职场文书