canvas制作原生的百分比圆形比例等
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>canvas制作原生的百分比圆形比例等</title> <style> *{margin:0;padding:0;} body{text-align:center;} </style> </head> <body> <div class="chart"> <canvas id="canvas" width="300" height="300" style="border:1px solid #e5e5e5"></canvas> </div> </body> </html>
<script type="text/javascript"> window.onload = function(){ var draw = document.getElementById("canvas"); if(!draw.getContext){ return false; } var context=draw.getContext('2d'), centerX=draw.width/2, centerY=draw.height/2, angle= 0.6, //占的百分数 color=[], //"#e5e5e5","red","#F00" font="40px Arial"; speed = 0; //从度数开始50---》表示从50度开始 context.lineCap="round"; //square 平角的帽 //绘制外圈的圆 function blueCircle(){ context.save();//save() 方法保存当前图像状态的一份拷贝。 context.strokeStyle = color[0] || "#e5e5e5"; //设置描边样式 context.lineWidth = 5; //设置线宽 context.beginPath();//路径开始 //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针) context.arc(centerX,centerY,centerX-5,0,2*Math.PI,false); context.stroke(); context.closePath(); //路径结束 context.restore();//save() 方法把当前状态的一份拷贝压入到一个保存图像状态的栈中。这就允许您临时地改变图像状态,然后,通过调用 restore() 来恢复以前的值。 } //绘制红色外圈 function redCircle(n){ context.save(); context.strokeStyle = color[1] || "red"; //设置描边样式 context.lineWidth = 5; //设置线宽 context.beginPath(); context.arc(centerX, centerY, centerX-5 , -Math.PI /2, (n * 3.6 - 90) * Math.PI / 180, false); context.stroke(); context.closePath(); context.restore(); } //百分比文字绘制 function text(n){ context.save(); //save和restore可以保证样式属性只运用于该段canvas元素 context.beginPath(); context.font =font || "40px Arial"; //设置字体大小和字体 context.fillStyle=color[2] || "#333"; context.textAlign='center';//文本程度对齐方法 context.textBaseline='middle';//文本垂曲标的目的,基线位置 //绘制字体,并且指定位置 context.fillText(n.toFixed(0)+"%", centerX, centerY); context.stroke(); //执行绘制 context.closePath(); context.restore(); } //自己一直调用自己动画循环 var timer=null; (function drawFrame(){ timer=setTimeout(drawFrame,10); context.clearRect(0, 0, draw.width, draw.height); blueCircle(); redCircle(speed); text(speed); if(speed >= angle*100){ clearTimeout(timer); } speed += 0.2; }()); } </script>
canvas制作原生的百分比圆形比例等的更多相关文章
- Canvas制作动态进度加载水球
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 用Canvas制作简单的画图工具
今天用Canvas制作了一个画图工具,非常简单,功能也不是很多,主要有背景网格,画线,画圆,画矩形和画圆角矩形,也用到了canvas的一些基本知识,在这里一一列举. 1.线段的绘制: 如何绘制真正的1 ...
- H5上传图片并使用canvas制作海报
马上就要"十一"国庆节了,又恰逢公司已经三周岁了,所以市场部和产品共同策划了一个"正青春,共成长"的主题代言活动,准备在国庆节以及中秋节期间让公司员工和用户为公 ...
- 使用canvas制作的移动端color picker
使用canvas制作的移动端color picker 项目演示地址(用手机或者手机模式打开) 我在另一个中demo,需要用到color picker,但是找不到我需要的移动端color picker, ...
- 酷!使用 jQuery & Canvas 制作相机快门效果
在今天的教程中,我们将使用 HTML5 的 Canvas 元素来创建一个简单的摄影作品集,它显示了一组精选照片与相机快门的效果.此功能会以一个简单的 jQuery 插件形式使用,你可以很容易地整合到任 ...
- 如何使用 HTML5 Canvas 制作水波纹效果
今天,我们继续分享 JavaScript 实现的效果例子,这篇文章会介绍使用 JavaScript 实现水波纹效果.水波效果以图片为背景,点击图片任意位置都会触发.有时候,我们使用普通的 Javasc ...
- 简单实用的纯CSS百分比圆形进度条插件
percircle是一款简单实用的纯CSS百分比圆形进度条插件.你不需要做任何设置,只需要按该圆形进度条插件提供的标准HTML结构来编写代码,就可以生成一个漂亮的百分比圆形进度条. 首先要做的就是引入 ...
- 使用canvas制作在线画板
canvas绘图的强大功能,让人前仆后继的去研究它.代码全部加起来不足百行.还用到了h5中的<input type="color"/>和<input type=& ...
- 怎样用HTML5 Canvas制作一个简单的游戏
原文连接: How To Make A Simple HTML5 Canvas Game 自从我制作了一些HTML5游戏(例如Crypt Run)后,我收到了很多建议,要求我写一篇关于怎样利用HTML ...
随机推荐
- JAVA-SPI机制-实现功能的热插拔
一.序: 开发中经常遇到的一个需求是,处理不同种类的数据,但是完成的功能是相似的,功能随着传入类型的不同而变化 二.方案: 1.定义接口:定义一个接口,编写不同的实现类 (1)使用场景:完成功能相同, ...
- sqlplus 中 各列对齐设定
设置列标题的对齐方式 JUSTFIFY {L[EFT]|C[ENTER]|R[IGHT]} SQL> col ename justify center SQL> /
- HBase的Rowkey设计(mark)
在HBase中细节上的设计,最最最重要的就是我该选取什么做Rowkey,Rowkey的选择,最直接的影响就是对你之后分析数据的影响了. Rowkey是不可分割的字节数,按照字典排序由低到高存储在表中. ...
- 11-[CSS]-标准文档流,display,浮动,清除浮动,overflow
1.标准文档流 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- 一键将 Python2 代码自动转化为 Python3
问题 Python2 的代码直接在 Python3 环境运行的话会报错误: 如果大量的代码,无论是批量替换,还是逐行修改都够累的,这活儿表示不能干! 有没有办法一键转换呢? 百度了一下发现网上的方法如 ...
- RegExp正则匹配模式汇总
正则表达式提供另一种强大的文本搜索和处理方式,对于正则表达式,不同语言有着不同的实现,JavaScript采用的Perl5的语法.对于极少数匹配模式是简单的全字符文本的情况,我们往往会采用indexO ...
- 2018年美国大学生数学建模竞赛(MCM/ICM) E题解题思路
任务一就是让大家去做个基本的评价,是典型的评价类问题,所以应该按照 指标+方法的步骤去做,首先就是寻找国家脆弱性的相关概念,然后选择影响国 家脆弱性的指标,如气候变化,经济发展,政治状况等等,再就是构 ...
- 【转】Appium 中截取 element 图片作为对比,判断对比结果
其实在https://github.com/gb112211/Adb-For-Test 里面有一个截取element进行对比的方法,但是在使用appium时是无法使用的,因为其用到了uiautomat ...
- Docker创建数据卷容器
docker create --name test_4 -v /data_4 nginx创建一个test_4数据卷容器,在该容器的/data_4目录挂载数据卷 使用数据卷容器时,无须保证数据卷容器处于 ...
- sqlite导入mysql
在线阅读地址 http://wenku.baidu.com/view/cc6821a8482fb4daa58d4bb8