(转)浅谈HTML5与css3画饼图!

神马系饼图?

饼图,大家都应该熟知,在统计数据对比方面,几乎处处用到。如cnzz的统计饼图

从饼图中,很形象地展示了访问者地区的分布,以扇形为块的方式拼成一个大圆。

都使用什么方法实现

目前众多站点制作饼图大多使用flash,或者后台语言生成,如PHP,Python只要安装相应的基础库就能实现画图。但很少有站点这么干,因为耗费服务器资源。

cnzz里使用的就是flash

PHP生成的

HTML5与CSS3也能画出饼图

不得不说,HTML5与CSS3的推出,将推翻老一代的网页制作者。特别在当今浏览器标准不断统一的情况下,新生的网页制作者几乎想不到在过去的时间里制作网页调兼容性是一件非常痛苦的事。

过去我们要实现圆角只能切图,如今在CSS3里只需一条代码搞定。而CSS3的功能远不止这些,配合HTML5还能画饼图数据分析。

然而,HTML5与CSS3严格意义上不具备编程语言的思想,所以还要借助JS去“画”它。

html代码


1

<canvas id="bingtu"  width="224" height="130" ></canvas>

JS代码


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

var color = ["#999999","#333333","#336799"];

var data = [25,35,50];

function drawCircle(){

        var canvas = document.getElementById("bingtu");

        var ctx = canvas.getContext("2d");

        var startPoint= 1.5 * Math.PI;

        for(var i=0;i<data.length;i++){

                ctx.fillStyle = color[i];

                ctx.strokeStyle = color[i];

                ctx.beginPath();

                ctx.moveTo(112,65);

                ctx.arc(112,65,65,startPoint,startPoint-Math.PI*2*(data[i]/100),true);

                ctx.fill();

                ctx.stroke();

                startPoint -= Math.PI*2*(data[i]/100);

        }

}

drawCircle();

canvas是HTML5新增的画布标签,个人感觉这个标签在将来将大有用途,喜欢研究HTML5的童鞋可以深入研究这个标签。canvas上的高度可以自己随意设置,当然宽不能小于高,否则图形出来不是圆的。

这里重点讲下这段js代码用法

var color = ["#999999","#333333","#336799"];  画饼图所用的颜色

var data = [25,35,50];  数据比,全部是数据加起来是100,才能画满整个圆

var ctx = canvas.getContext("2d");  画2D平面图

var startPoint= 1.5 * Math.PI; 绘制方向起点,有逆顺之分,通常是 1.5*Math.PI 或者 0

ctx.fillStyle = color[i]   填充颜色

ctx.beginPath(); 开始画

ctx.moveTo(112,65);   每次回到圆心,第一个值 112 是 canvas 宽的一半, 65是 canvas 高的一半。其实也可以利用js获取对象的宽高算出来就好,省该canvas宽高后还要去调整JS代码中的参数。

ctx.arc(...); 开始画图,前两个参数是圆心坐标,第三个参数是半径大小,第四个参数是圆周起始位置,第五个参数是弧长,就是我们圆弧的范围,Math.PI*2就是整个圆了,Math.PI是半圆,第六个参数是个布尔值,就是确定是顺时针还是逆时针,这里false是顺时针。

ctx.fill() ; 填充

ctx.stroke(); 边框

startPoint -= Math.PI*2*(data[i]/100); 画完一个善行以后,重新计算回到原点开始绘制下一扇,否则画出来的饼图拼起来就不是圆形了。

效果:

目前唯一的遗憾是还不能在图上加文字。

其它HTML5与CSS3图形统计数据示例

转载链接:http://www.qttc.net/201212255.html

时间: 2024-10-23 16:02:05

(转)浅谈HTML5与css3画饼图!的相关文章

浅谈HTML5单页面架构(二)——backbone + requirejs + zepto + underscore

本文转载自:http://www.cnblogs.com/kenkofox/p/4648472.html 上一篇<浅谈HTML5单页面架构(一)——requirejs + angular + angular-route>探讨了angular+requirejs的一个简单架构,这一篇继续来看看backbone如何跟requirejs结合. 相同地,项目架构好与坏不是说用了多少牛逼的框架,而是怎么合理利用框架,让项目开发更流畅,代码更容易管理.那么带着这个目的,我们来继续探讨backbone. 首

AngularJS进阶(二十五)requirejs + angular + angular-route 浅谈HTML5单页面架构

requirejs + angular + angular-route 浅谈HTML5单页面架构 众所周知,现在移动Webapp越来越多,例如天猫.京东.国美这些都是很好的例子.而在Webapp中,又要数单页面架构体验最好,更像原生app.简单来说,单页面App不需要频繁切换网页,可以局部刷新,整个加载流畅度会好很多. 废话就不多说了,直接到正题吧,浅谈一下我自己理解的几种单页面架构: 1.requirejs+angular+angular-route(+zepto) 最后这个zepto可有可无

浅谈 HTML5 的 DOM Storage 机制 (转)

在开发 Web 应用时,开发者有时需要在本地存储数据.当前浏览器支持 cookie 存储,但其大小有 4KB 的限制.这对于一些 Ajax 应用来说是不够的.更多的存储空间需要浏览器本身或是插件的支持,如 Google Gears 和 Flash.不过开发人员需要通过检测当前浏览器所支持的插件类型来使用对应的接口. HTML5 中新引入了 DOM Storage 机制,通过使用键值对在客户端保存数据,并且提供了更大容量的存储空间.本文将详细论述 HTML5 对本地存储的支持,并对存储事件绑定和数

浅谈HTML5单页面架构(一)——requirejs + angular + angular-route

本文转载自:http://www.cnblogs.com/kenkofox/p/4643760.html 心血来潮,打算结合实际开发的经验,浅谈一下HTML5单页面App或网页的架构. 众所周知,现在移动Webapp越来越多,例如天猫.京东.国美这些都是很好的例子.而在Webapp中,又要数单页面架构体验最好,更像原生app.简单来说,单页面App不需要频繁切换网页,可以局部刷新,整个加载流畅度会好很多. 废话就不多说了,直接到正题吧,浅谈一下我自己理解的几种单页面架构: 1.requirejs

浅谈html5 响应式布局

一.什么是响应式布局? 响应式布局是Ethan Marcotte在2010年5月份提出的一个概念,简而言之,就是一个网站能够兼容多个终端——而不是为每个终端做一个特定的版本. 这个概念是为解决移动互联网浏览而诞生的.响应式布局可以为不同终端的用户提供更加舒适的界面和更好的用户体验,而且随着目前大屏幕移动设备的普及,用大势所趋来形容也不为过. 随着越来越多的设计师采用这个技术,我们不仅看到很多的创新,还看到了一些成形的模式. 二.响应式布局有哪些优点和缺点?   优点: 面对不同分辨率设备灵活性强

使用css3画饼图

CSS3 Gradient介绍参考地址: http://www.cnblogs.com/lhb25/archive/2013/01/30/css3-linear-gradient.html http://www.zhangxinxu.com/wordpress/?p=3639 效果图: html: <div class="colorWheel"> <div class="piece"></div> </div> css

浅谈 html5 兼容性 &lt; IE9 + 的 解决方案 以及 网站 性能优化 的 工具

1> ie-css3.htc                     css3  < IE 9+兼容方式(部分兼容,canvas 不好使)link:http://fetchak.com/ie-css3/2> html5shiv.js                   html5  < IE 9+兼容方式 link:https://github.com/xgqfrms/html5shiv 3>网站 性能优化 tool Yslow + (firefox) firebug lin

浅谈html5

HTML5和HTML的区别: 1.在文档类型声明上 html:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> html5:<!DOCTY

浅谈HTML5 WebSocket的机制

回顾上一章 在上一章<为什么我们需要HTML5 WebSocket>中,我简单的介绍了下WebSocket的前世今生.相信大家已对WebSocket有了初步的了解.那么今天我们继续深入学习WebSocket的机制. WebSocket机制 我们知道WebSocket是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(不知道的可以看下全双工通信RS-422标准),能更好的节省服务器资源和带宽并达到实时通讯,它建立在TCP之上,同HTTP一样通过TCP来传输数据,但是它和HTTP最大不同是