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 相关文章推荐
Track Image Loading效果代码分析
Aug 13 Javascript
[原创]后缀就扩展名为js的文件是什么文件
Dec 06 Javascript
extjs ColumnChart设置不同的颜色实现代码
May 17 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
Dec 02 Javascript
js常用自定义公共函数汇总
Jan 15 Javascript
node.js中的console.assert方法使用说明
Dec 10 Javascript
jQuery中add()方法用法实例
Jan 08 Javascript
JavaScript中实现sprintf、printf函数
Jan 27 Javascript
Javascript农历与公历相互转换的简单实例
Oct 09 Javascript
react开发教程之React 组件之间的通信方式
Aug 12 Javascript
vue2实现可复用的轮播图carousel组件详解
Nov 27 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
Aug 28 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
SONY ICF-F10中波修复记
2021/03/02 无线电
使用PHP获取汉字的拼音(全部与首字母)
2013/06/27 PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
2014/01/14 PHP
php发送post请求的三种方法
2014/02/11 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
对google个性主页的拖拽效果的js的完整注释[转]
2007/04/10 Javascript
很棒的学习jQuery的12个网站推荐
2011/04/28 Javascript
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
代码触发js事件(click、change)示例应用
2013/12/13 Javascript
利用进制转换压缩数字函数分享
2014/01/02 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
2016/01/06 Javascript
JS实现鼠标滑过显示边框的菜单效果
2016/09/21 Javascript
jQuery插件开发发送短信倒计时功能代码
2017/05/09 jQuery
Angular网络请求的封装方法
2018/05/22 Javascript
解决eclipse中没有js代码提示的问题
2018/10/10 Javascript
vue中如何添加百度统计代码
2020/12/19 Vue.js
微信小程序实现下拉加载更多商品
2020/12/29 Javascript
python 获取文件列表(或是目录例表)
2009/03/25 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
PyTorch中permute的用法详解
2019/12/30 Python
Python json读写方式和字典相互转化
2020/04/18 Python
sublime3之内网安装python插件Anaconda的流程
2020/11/10 Python
python基于Kivy写一个图形桌面时钟程序
2021/01/28 Python
国际领先的在线时尚服装和配饰店:DressLily
2019/03/03 全球购物
方法名是否可以与构造器的名字相同
2012/06/04 面试题
万户网络JAVA程序员岗位招聘笔试试卷
2013/01/08 面试题
抗洪抢险事迹材料
2014/05/06 职场文书
公司合作意向书范文
2014/07/30 职场文书
行政执法队伍作风整顿个人剖析材料
2014/10/11 职场文书
机关作风建设剖析材料
2014/10/11 职场文书
2014年林业工作总结
2014/12/05 职场文书
会计工作检讨书
2015/02/19 职场文书
自我评价优缺点范文
2015/03/11 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
使用vue-element-admin框架从后端动态获取菜单功能的实现
2021/04/29 Vue.js
MySQL新手入门进阶语句汇总
2022/09/23 MySQL