canvas绘制环形进度条


Posted in Javascript onFebruary 23, 2017

效果如下:

canvas绘制环形进度条

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
 <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
 <title>canvas绘制环形进度条</title>
 <style type="text/css">
 .chartbox{width: 100px;margin: 100px auto;}
 .myChart{width:100px;height: 100px;}
 </style>
</head>
<body>
 <div class="chartbox">
 <canvas class="myChart" id="myChart" width="100%" height="100%" data-total="100" data-curr="29.45"></canvas>
 </div>
 <script typet="text/javascript" src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
 <script type="text/javascript">
 (function($, window, undefined) { 
  $.fn.ringChart = function(options) {
  var defaults = { };
  var settings = $.extend({}, defaults, options);
  var canvas = $(this).get(0);
  var total = $(this).attr("data-total");
  var curr = $(this).attr("data-curr");
  var constrast = parseFloat(curr/total).toFixed(2); //比例
  var context = null;
  if ( !canvas.getContext) {
   return;
  }
  // 定义开始点的大小
  var startArc = Math.PI*1.5;
  // 根据占的比例画圆弧
  var endArc = (Math.PI * 2) * constrast;
  context = canvas.getContext("2d");
  // 圆心文字
  context.font="28px Arial";
   context.fillStyle = '#ff801a';
 context.textBaseline = 'middle';
   var text=(Number(curr/total)*100).toFixed(0)+"%";
   var tw=context.measureText(text).width;
 context.fillText(text,50-tw/2,50);
  // 绘制背景圆 
  context.save();
  context.beginPath();
  context.strokeStyle = "#e7e7e7";
  context.lineWidth = "4";
  context.arc(50, 50, 44, 0, Math.PI * 2, false);
  context.closePath();
  context.stroke();
  context.restore();
   // 若为百分零则不必再绘制比例圆
   if ( curr / total == 0) {
   return;
   }
  // 绘制比例圆 
  context.save();
  context.beginPath();
  context.strokeStyle = "#ff801a";
  context.lineWidth = "4";
   context.arc(50, 50, 44, startArc, (curr % total == 0 ? startArc : (endArc+startArc)), false);
  context.stroke();
  context.restore();
  }
 })($, window);
 $("#myChart").ringChart();
 </script>
</body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
jQuery选择没有colspan属性的td的代码
Jul 06 Javascript
js 优化次数过多的循环 考虑到性能问题
Mar 05 Javascript
关于JavaScript的with 语句的使用方法
May 09 Javascript
js判断浏览器类型为ie6时不执行
Jun 15 Javascript
JS+CSS实现TreeMenu二级树形菜单完整实例
Sep 18 Javascript
pace.js页面加载进度条插件
Sep 29 Javascript
JS处理数据四舍五入(tofixed与round的区别详解)
Oct 26 Javascript
Bootstrap 按钮样式与使用代码详解
Dec 09 Javascript
javascript json字符串到json对象转义问题
Jan 22 Javascript
vue插件mescroll.js实现移动端上拉加载和下拉刷新
Mar 07 Javascript
jQuery实现简单聊天室
Feb 08 jQuery
js异步接口并发数量控制的方法示例
Nov 22 Javascript
微信小程序 两种为对象属性赋值的方式详解
Feb 23 #Javascript
js实现文字跑马灯效果
Feb 23 #Javascript
微信小程序 出现错误:{&quot;baseresponse&quot;:{&quot;errcode&quot;:-80002,&quot;errmsg&quot;:&quot;&quot;}}解决办法
Feb 23 #Javascript
JS正则表达式验证密码格式的集中情况总结
Feb 23 #Javascript
js模拟微博发布消息
Feb 23 #Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
Feb 23 #Javascript
微信小程序 开发之顶部导航栏实例代码
Feb 23 #Javascript
You might like
PHP在Web开发领域的优势
2006/10/09 PHP
杏林同学录(一)
2006/10/09 PHP
PHP 中dirname(_file_)讲解
2007/03/18 PHP
PHP中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
js 遍历对象的属性的代码
2011/12/29 Javascript
js获取当前月的第一天和最后一天的小例子
2013/11/18 Javascript
禁止iframe页面的所有js脚本如alert及弹出窗口等
2014/09/03 Javascript
DOM基础教程之使用DOM控制表格
2015/01/20 Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
2016/01/26 Javascript
vue填坑之webpack run build 静态资源找不到的解决方法
2018/09/03 Javascript
JavaScript如何处理移动端拍摄图片旋转问题
2019/11/16 Javascript
解决Vue-cli无法编译es6的问题
2020/10/30 Javascript
在nuxt中使用路由重定向的实例
2020/11/06 Javascript
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
python socket 超时设置 errno 10054
2014/07/01 Python
使用Python的Treq on Twisted来进行HTTP压力测试
2015/04/16 Python
Python的多态性实例分析
2015/07/07 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
2017/02/14 Python
基于ID3决策树算法的实现(Python版)
2017/05/31 Python
Python通过Django实现用户注册和邮箱验证功能代码
2017/12/11 Python
python修改list中所有元素类型的三种方法
2018/04/09 Python
Python设计模式之命令模式原理与用法实例分析
2019/01/11 Python
Python将string转换到float的实例方法
2019/07/29 Python
Pygame框架实现飞机大战
2020/08/07 Python
Python本地及虚拟解释器配置过程解析
2020/10/13 Python
利用css3画个同心圆示例代码
2017/07/03 HTML / CSS
canvas学习笔记之绘制简单路径
2019/01/28 HTML / CSS
日本乐天德国站:Rakuten.de
2019/05/16 全球购物
学习优秀党务工作者先进事迹材料思想报告
2014/09/17 职场文书
个人年度总结报告
2015/03/09 职场文书
2015年“7.11”世界人口日宣传活动方案
2015/05/06 职场文书
背起爸爸上学观后感
2015/06/08 职场文书
2016幼儿园中班开学寄语
2015/12/03 职场文书
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python
python实现的web监控系统
2021/04/27 Python
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
2021/06/08 Python