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 相关文章推荐
用正则xmlHttp实现的偷(转)
Jan 22 Javascript
jquery1.5.1中根据元素ID获取元素对象的代码
Apr 02 Javascript
JQuery的Ajax跨域请求原理概述及实例
Apr 26 Javascript
jquery foreach使用示例
Sep 12 Javascript
JS控制一个DIV层在指定时间内消失的方法
Feb 17 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
Feb 25 Javascript
jQuery对指定元素中指定字符串进行替换的方法
Mar 17 Javascript
Node.js学习之地址解析模块URL的使用详解
Sep 28 Javascript
vue实现商城购物车功能
Nov 27 Javascript
Vue数据双向绑定的深入探究
Nov 27 Javascript
Vue中通过Vue.extend动态创建实例的方法
Aug 13 Javascript
js get和post请求实现代码解析
Feb 06 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入门小知识
2008/03/24 PHP
php中使用explode查找某个字符是否存在的方法
2011/07/12 PHP
php函数传值的引用传递注意事项分析
2016/06/25 PHP
php查询及多条件查询
2017/02/26 PHP
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
extjs grid设置某列背景颜色和字体颜色的方法
2010/09/03 Javascript
浅析js中2个等号与3个等号的区别
2013/08/06 Javascript
JavaScript中模拟实现jsonp
2015/06/19 Javascript
javascript处理a标签超链接默认事件的方法
2015/06/29 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
2015/08/01 Javascript
JavaScript中innerHTML,innerText,outerHTML的用法及区别
2015/09/01 Javascript
基于Javascript实现返回顶部按钮
2016/02/29 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
2016/11/29 Javascript
js断点调试心得分享(必看篇)
2017/12/08 Javascript
javascript回调函数详解
2018/02/06 Javascript
JavaScript中set与get方法用法示例
2018/08/15 Javascript
Node.js对MongoDB进行增删改查操作的实例代码
2019/04/18 Javascript
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
JS数组的高级使用方法示例小结
2020/03/14 Javascript
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
Python实现简单过滤文本段的方法
2017/05/24 Python
Python+selenium实现截图图片并保存截取的图片
2018/01/05 Python
Python 使用类写装饰器的小技巧
2018/09/30 Python
利用css3实现的简单的鼠标悬停按钮
2014/11/04 HTML / CSS
Html5无刷新修改browser Url的方法
2014/01/15 HTML / CSS
夏威夷灵感服装及配饰:Reyn Spooner
2018/09/18 全球购物
Ibatis如何调用存储过程
2015/05/15 面试题
幼儿园园长岗位职责
2013/11/26 职场文书
办公室助理岗位职责
2013/12/25 职场文书
开展批评与自我批评发言材料
2014/05/15 职场文书
学雷锋的心得体会
2014/09/04 职场文书
法学专业大学生实习自我鉴定
2014/10/05 职场文书
三潭印月的导游词
2015/02/12 职场文书
基于Nginx实现限制某IP短时间访问次数
2021/03/31 Servers
Python数据处理的三个实用技巧分享
2022/04/01 Python
python解析照片拍摄时间进行图片整理
2022/07/23 Python