`
sarin
  • 浏览: 1756910 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
E3b14d1f-4cc5-37dd-b820-b6af951740bc
Spring数据库访问系列...
浏览量:173657
C2083dc5-6474-39e2-993e-263652d27795
Android学习笔记
浏览量:368124
5f40a095-b33c-3e8e-8891-606fcf3b8d27
iBatis开发详解
浏览量:189261
B272a31d-e7bd-3eff-8cc4-c0624ee75fee
Objective-C学习...
浏览量:99838
社区版块
存档分类
最新评论

HTML5绘制饼图实例(二)

阅读更多
    本文接上一讲继续来说明
    我们继续来制作饼图示例,结合CSS3。先说一下需求,就是一个展示的页面,用饼图来展示数据,下方给出各个扇形的含义,最后给一个按钮点击进入详情。饼图的上方有标题和简单的文字介绍,这些内容竖式结构,页面上显示散列,就是这么简单。
    我们首先来设置背景样式,用CSS3的渐变,那么首先页面代码需要先修改,我们一步一步来,首先看下HTML代码:
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <title>HTML5 Canvas Demo</title>
<style type="text/css">
body{
	margin:0px;
	padding:0px;
}
.bg{
    position:absolute;
    height:100%;
    width:100%;
	overflow-x: hidden;
	overflow-y:hidden;
    background-image: -moz-linear-gradient(top,#77D1F6, #2F368F);
    background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #77D1F6),color-stop(1, #2F368F));
}
</style>
</head>
<body>
</html>

    这样,我们就得到了一个渐变的背景,并且对webkit内核和moz内核的浏览器都可用,同时设置没有滚动条。好,下面来设置显示的区域,加入渐变,那么我们将HTML代码修改如下:
<div class="bg">
	<div class="panelBg"></div>
</div>

    就是在内部加入了一个div层,那么相应的CSS代码如下:
.panelBg{
    position:absolute;
    height:600px;
    width:800px;
    left:250px;
    top:20px;
    border-radius: 12px;
    background-color:#000000;
    opacity:0.5;
}

    因为我们要做层次的效果,且层间不能干扰,我们使用了绝对定位,同时设置属性,这里还加入了圆角矩形的设置,圆角半径为12px,最后设置渐变效果opacity为0.5,那么效果大家自己去看,我们继续来做:
<div class="bg">
	<div class="panelBg"></div>
	<div class="panel">
	</div>
</div>

    很简单,加了一个div,设置class为panel,那么CSS为:
.panel{
    position:absolute;
    height:550px;
    width:750px;
    left:275px;
    top:45px;
    border-radius: 12px;
    background-image: -moz-linear-gradient(top,#EBEBEB, #BFBFBF);
    background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #EBEBEB),color-stop(1, #BFBFBF));
}

    也是用了渐变的背景,然后设置长宽和位置,加上圆角矩形,根据外层背景的长和宽,我们预留的渐变边框为25px,那么内层的各个属性我们也不难算出来,那么我们就得到了现在的效果:

    底板基本都做好了,我们就开始往里面填充内容吧,首先是HTML:
<div class="bg">
	<div class="panelBg"></div>
	<div class="panel">
		<div id="section1">
		</div>
		<div id="section2">
		</div>
		<div id="section3">
		</div>
	</div>
</div>

    要放置这三个块了,就设置三个层,然后进行样式处理:
#section1{
    border:1px solid red;
    position:relative;
    float:left;
    width:235px;
    height:530px;
    top:10px;
    left:10px;
}
#section2{
    border:1px solid red;
    position:relative;
    float:left;
    width:235px;
    height:530px;
    top:10px;
    left:20px;
}
#section3{
	border:1px solid red;
    position:relative;
    float:left;
    width:235px;
    height:530px;
    top:10px;
    left:30px;
}

    这里我留下了border属性,就是为了测试时定位用的,那么现在我们得到了这样的效果:

    下面就是对这三块中的内容进行填充了,我们讲解一块,其它三个都是类似的,很简单,首先我们设置标题title和副标题subTitle:,放到section1中:
	<div id="section1">
		<div class="title">HTML5</div>
		<div class="subTitle">HTML5 是下一代的HTML,包含诸多新特性,比如绘制图形的canvas元素。</div>
	</div>

    样式代码如下:
.title{
    border:1px solid red;
    position:relative;
    margin:5px;
    font-family:微软雅黑;
    font-size:22px;
    font-weight:bold;
    text-align:center;
    color:#58595B;
}
.subTitle{
    border:1px solid red;
    margin:5px;
    font-family:微软雅黑;
    font-size:14px;
	height:70px;
    font-weight:bold;
	text-indent:2em;
    color:#6D6E71;
}

    现在的效果为:

    接下来我们要放置配置饼图的canvas了,绘制饼图的方法之前说过,就是一段JavaScript代码,我们只需要留出位置即可:
	<div id="section1">
		<div class="title">HTML5</div>
		<div class="subTitle">HTML5 是下一代的HTML,包含诸多新特性,比如绘制图形的canvas元素。</div>
		<div class="piechart">
			<canvas id="piechart1" width="225" height="168"></canvas>
		</div>
	</div>

    下面就是确定样式和绘制饼图了,只需调整圆心位置即可,将data数组放于方法内,我们要设置三组data值,而color就是一组:
.piechart{
    border:1px solid red;
    margin:5px;
    height:170px;
}

<script type="text/javascript">
var color = ["#27255F","#2F368F","#3666B0","#2CA8E0","#77D1F6"];

function drawCircle(){
	var data = [5,30,15,30,20];
	var canvas = document.getElementById("piechart1");
	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,84);
		ctx.arc(112,84,84,startPoint,startPoint-Math.PI*2*(data[i]/100),true);
		ctx.fill();
		ctx.stroke();
		startPoint -= Math.PI*2*(data[i]/100);
	}
}
drawCircle();
</script>

    我们来看看绘制好饼图后的效果:

    下面放置对饼图的介绍,也很简单,我们来看一下,将下面的代码放置到piechart的div下面:
<div class="description">
				<div class="scroll-item item-even">
					<div class="rect" style="background-color: rgb(119, 209, 246); "></div>
					<div class="item-text">20% Opera</div>
				</div>
				<div class="scroll-item item-odd">
					<div class="rect" style="background-color: rgb(44, 168, 224); "></div>
					<div class="item-text">30% FireFox</div>
				</div>
				<div class="scroll-item item-even">
					<div class="rect" style="background-color: rgb(54, 102, 176); "></div>
					<div class="item-text">15% Safari</div>
				</div>
				<div class="scroll-item item-odd">
					<div class="rect" style="background-color: rgb(47, 54, 143); "></div>
					<div class="item-text">30% Chrome</div>
				</div>
				<div class="scroll-item item-even">
					<div class="rect" style="background-color: rgb(39, 37, 95); "></div>
					<div class="item-text">5% IE</div>
				</div>
			</div>

    其中涉及到的CSS样式为:
.description{
    border:1px solid #CCCCCC;
    border-color: #636263 #464647 #A1A3A5;
    margin:10px 5px;
    height:165px;
    border-radius: 4px;
}
.scroll-item {
	position: relative;
	width: 100%;
	height: 32px;
	border-bottom:1px solid gray;
	cursor: pointer;
}
.item-even {
	background-color: #E7E8EC;
}

.item-odd {
	background-color: #E0ECF6;
}
.rect {
	float: left;
	margin-top: 5px;
	margin-left: 5px;
	width: 20px;
	height: 20px;
	border-radius: 3px;
}
.item-text{
	margin-left: 5px;
	height: 100%;
	float: left;
	font-size: 14px;
	font-family: 微软雅黑;
	vertical-align: middle;
	display: inline-block;
	line-height: 30px;
}

    其中没什么可多说的,就是设置了一下奇偶行的不同颜色,因为我们都是定死的,所以就这么来做了,比较简单,剩下就是设置长宽,圆角的样式了,不是很难,现在我们得到了这样的效果:

    还有最后的一个按钮了,也很简单了,我们如下设置,接着上面的代码,编写:
<div class="button]<span class="buttonText">查看详情   ></span>[/align]

    然后设置样式:
.button{
    border:1px solid #cccccc;
    cursor:pointer;
    margin:10px 5px;
    height:40px;
    text-align:center;
    border-radius: 4px;
    border-color: #636263 #464647 #A1A3A5;
    text-shadow: 0 1px 1px #F6F6F6;
    background-image: -moz-linear-gradient(center top, #D9D9D9, #A6A6A6 49%, #A6A6A6 50%);
    background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #D9D9D9),color-stop(1, #A6A6A6));
}
.buttonText{
    position:relative;
    font-weight:bold;
    top:10px;
    font-family:微软雅黑;
    color:#58595B;
}

    现在我们就完成了一组了,得到如下的效果:

    比葫芦画瓢完成剩下两组,也很简单了,最后我们得到:

    那么,这个例子也就做完了,主要是介绍利用Canvas绘制饼图,然后结合CSS制作一个小demo,用于数据展示用,对浏览器要求比较高,而且基本排除了IE,暂时也就不太适合普通应用,在特定浏览器的应用中(比如ipad中的safari等)使用较好。
     至此,本部分就介绍完了。欢迎交流,希望对使用者有用。更多精彩内容,稍后为您呈现。
  • 大小: 31 KB
  • 大小: 35.2 KB
  • 大小: 37.4 KB
  • 大小: 39.4 KB
10
2
分享到:
评论

相关推荐

    JavaScript绘制曲线、圆形饼图实例

    JavaScript绘制曲线、圆形饼图实例 本资源是关于使用JavaScript绘制曲线和圆形饼图的实例。该实例使用HTML、JavaScript和CSS技术来实现曲线和圆形饼图的绘制。 知识点1:JavaScript绘制曲线 JavaScript可以使用 ...

    ios 程序绘制饼图的demo

    总的来说,这个“ios程序绘制饼图的demo”涵盖了iOS开发中的图形绘制、数据可视化、自定义视图、手势识别和动画效果等多个方面,是学习和实践iOS图形编程的一个良好实例。开发者通过学习和研究这个Demo,可以掌握...

    python对CSV文件进行可视化-饼图.pdf

    在开始绘制饼图之前,需要安装必要的库,包括 Python 和 Matplotlib。使用 pip install matplotlib 命令可以轻松地安装 Matplotlib 库。 二、pie() 函数常见参数 Matplotlib 库提供了 pie() 函数来绘制饼图,该...

    数据可视化-Pyecharts绘制饼图

    3. 创建饼图实例: ```python pie = ( Pie() .add( "饼图", data, radius=["35%", "75%"], # 内外半径 label_opts=opts.LabelOpts(position="outer"), # 标签位置 ) .set_global_opts(title_opts=opts....

    android绘制饼图

    在标题“android绘制饼图”中,我们主要关注的是如何在Android应用程序中实现饼图的绘制功能。这篇博客(http://blog.csdn.net/z_zt_t/article/details/58588011)提供了详细步骤,下面将详细讲解这个过程。 首先,...

    Asp.net 直方图饼图实现方法WebChart实例

    6. **绘制饼图**:WebChart会自动绘制饼图,无需像直方图那样手动绘制图形。 在VS2005中,你可以直接运行项目,查看并测试这些图表的实现效果。WebChart控件的强大之处在于其灵活性和可定制性,允许开发者根据需求...

    使用canvas来绘制饼图

    - 动画效果:通过时间间隔逐步绘制饼图切片,增加视觉吸引力。 - 鼠标悬停效果:检测鼠标位置,显示切片详情或高亮选中切片。 - 文本标注:在每个切片旁添加标签,显示类别名称或百分比。 - 颜色映射:根据数据...

    VC++ 利用MSchart输出柱状图、拆线图、饼图实例

    VC++ 利用MSchart输出柱状图、拆线图、饼图实例 MSChart是微软推出的基于图形显示的ActiveX控件,可以用来绘制各种数字统计图表。比如折线图、柱状图和饼状图等,本小例子就是VC++利用MSchart输出柱状图、拆线图等...

    jquery html5 图表用canvas绘制一个动画圆形饼图

    接下来,我们要在`chart.js`中编写JavaScript代码来绘制饼图。首先,我们需要获取Canvas元素并创建一个2D绘图上下文: ```javascript var canvas = document.getElementById('pieChart'); var ctx = canvas....

    C# winform 绘制曲线图,饼图,图片添加文字

    3. **绘制饼图** 饼图常用于显示各部分占总体的比例。在C#中,我们首先计算各个扇区的中心角度,然后使用`DrawPie`方法绘制。该方法需要弧度起始点、结束点和圆心坐标等参数。饼图的标签和百分比可以额外用`...

    Qt自绘制饼图demo

    最近在搞绘图方面的工作,说实话C++的第三方绘图库并不算多,有:qtcharts、ChartDirector、qwt、kdchart和QCustomPlot。这几个库各有利弊。在网上找了个实例,上传给大家共享。

    简单的饼图绘制Demo

    1. **PieView类**:这是核心的视图类,负责绘制饼图。它可能包含了计算扇形角度、绘制扇形、添加标签等功能。在Swift或Objective-C中,通常会继承自UIView,并重写drawRect方法进行自定义绘制。 2. **数据模型**:...

    绘制复合饼图的辅助图.xlsx源码EXCEL VBA宏编程xlsx实例代码下载

    绘制复合饼图的辅助图.xlsx源码EXCEL VBA宏编程xlsx实例代码下载绘制复合饼图的辅助图.xlsx源码EXCEL VBA宏编程xlsx实例代码下载绘制复合饼图的辅助图.xlsx源码EXCEL VBA宏编程xlsx实例代码下载绘制复合饼图的辅助图...

    Zegraph 绘制饼图、柱状图、折线图 代码

    4. 绘制饼图:调用Zegraph的绘制方法,将数据转换为图形。 接着,我们来看看柱状图。柱状图是用垂直或水平的条形长度来表示数据大小的图表。在Zegraph中创建柱状图可能涉及以下步骤: 1. 创建Zegraph实例,配置横轴...

    【JavaScript源代码】JavaScript 绘制饼图的示例.docx

    在本文中,我们将深入探讨如何使用JavaScript来绘制饼图,这是一种常见的数据可视化方式,尤其适用于显示各部分占整体比例的情况。 首先,我们需要准备一个HTML文件,其中包含一个`&lt;canvas&gt;`元素,这是JavaScript...

    VC++利用MSchart输出柱状图、拆线图、饼图实例

    软件介绍: VC++利用MSchart输出柱状图、拆线图、饼图实例04439392MSChart是微软推出的基于图形显示的ActiveX控件,可以用来绘制各种数字统计图表。比如折线图、柱状图和饼状图等,本小例子就是VC++利用MSchart输出...

    python+matplotlib绘制饼图散点图实例代码

    本文是从matplotlib官网上摘录下来的一个实例,实现的功能是Python+matplotlib绘制自定义饼图作为散点图的标记,具体如下。 首先看下演示效果 实例代码: import numpy as np import matplotlib.pyplot as plt # ...

    iOS绘制饼图 XYPieChart.zip

    本文将详细讲解如何使用Objective-C来实现饼图的绘制,主要聚焦于名为`XYPieChart`的开源库。 `XYPieChart`是专为iOS设计的一个轻量级的饼图组件,它允许开发者轻松地在应用中添加自定义的饼图视图。这个库的核心...

Global site tag (gtag.js) - Google Analytics