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插件 大家可以收藏一下
Feb 07 Javascript
Jquery实现视频播放页面的关灯开灯效果
May 27 Javascript
JS保存、读取、换行、转Json报错处理方法
Jun 14 Javascript
导入extjs、jquery 文件时$使用冲突问题解决方法
Jan 14 Javascript
jquery中获取元素里某一特定子元素的代码
Dec 02 Javascript
浅谈javascript中createElement事件
Dec 05 Javascript
js实现简单的验证码
Dec 25 Javascript
谈谈对JavaScript原生拖放的深入理解
Sep 20 Javascript
axios学习教程全攻略
Mar 26 Javascript
js中的事件委托或是事件代理使用详解
Jun 23 Javascript
使用Webpack提高Vue.js应用的方式汇总(四种)
Jul 10 Javascript
Vue全家桶实践项目总结(推荐)
Nov 04 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缓存类完整实例
2014/07/26 PHP
php自定义hash函数实例
2015/05/05 PHP
javascript eval函数深入认识
2009/02/21 Javascript
使用Json比用string返回数据更友好,也更面向对象一些
2011/09/13 Javascript
ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
2012/12/11 Javascript
中文路径导致unitpngfix.js不正常的解决方法
2013/06/26 Javascript
jQuery简单实现banner图片切换
2014/01/02 Javascript
PHP中CURL的几个经典应用实例
2015/01/23 Javascript
JQuery中的事件及动画用法实例
2015/01/26 Javascript
判断访客终端类型集锦
2015/06/05 Javascript
学习Node.js模块机制
2016/10/17 Javascript
利用yarn实现一个webpack+react种子
2016/10/25 Javascript
基于canvas的二维码邀请函生成插件
2017/02/14 Javascript
Node.js使用Express创建Web项目详细教程
2017/03/31 Javascript
bootstrap-table组合表头的实现方法
2017/09/07 Javascript
微信小程序使用navigateTo数据传递的实例
2017/09/26 Javascript
vue+element项目中过滤输入框特殊字符小结
2019/08/07 Javascript
使用tensorflow实现AlexNet
2017/11/20 Python
python中实现数组和列表读取一列的方法
2018/04/03 Python
python爬虫之xpath的基本使用详解
2018/04/18 Python
PyQt打开保存对话框的方法和使用详解
2019/02/27 Python
利用Python实现手机短信监控通知的方法
2019/07/22 Python
postman传递当前时间戳实例详解
2019/09/14 Python
python实现七段数码管和倒计时效果
2019/11/23 Python
pytorch使用 to 进行类型转换方式
2020/01/08 Python
使用 pytorch 创建神经网络拟合sin函数的实现
2020/02/24 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
2020/07/09 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
Python的信号库Blinker用法详解
2020/12/31 Python
旅游管理专业生自荐信范文
2014/01/02 职场文书
乐观大学生的自我评价
2014/01/10 职场文书
家长给孩子的评语
2014/01/30 职场文书
金融系应届毕业生求职信
2014/05/26 职场文书
浅谈MySQL函数
2021/10/05 MySQL
如何设置多台电脑共享打印机?多台电脑共享打印机的方法
2022/04/08 数码科技