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的实现回车键Enter切换焦点
Sep 14 Javascript
js中各浏览器中鼠标按键值的差异
Apr 07 Javascript
JS替换字符串中字符即替换全部而不是第一个
Jun 04 Javascript
Javascript中call与apply的学习笔记
Sep 22 Javascript
jQuery团购倒计时特效实现方法
May 07 Javascript
vue 动态改变静态图片以及请求网络图片的实现方法
Feb 07 Javascript
Element Input组件分析小结
Oct 11 Javascript
Vue组件Draggable实现拖拽功能
Dec 01 Javascript
Vue数字输入框组件的使用方法
Oct 19 Javascript
JS操作字符串转数字的常见方法示例
Oct 29 Javascript
vue实现简单瀑布流布局
May 28 Javascript
vue+Element-ui前端实现分页效果
Nov 15 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数组函数序列之array_key_exists() - 查找数组键名是否存在
2011/10/29 PHP
php连接与操作PostgreSQL数据库的方法
2014/12/25 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
2015/11/19 PHP
php PDO异常处理详解
2016/11/20 PHP
xml文档转换工具,附图表例子(hta)
2010/11/17 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
2013/12/11 Javascript
JavaScript中的继承方式详解
2015/02/11 Javascript
JQuery动态添加和删除表格行的方法
2015/03/09 Javascript
jquery实现多条件筛选特效代码分享
2015/08/28 Javascript
AngularJS中isolate scope的用法分析
2016/11/22 Javascript
js 函数式编程学习笔记
2017/03/25 Javascript
js实现点击生成随机div
2020/01/16 Javascript
Js逆向实现滑动验证码图片还原的示例代码
2020/03/10 Javascript
JavaScript enum枚举类型定义及使用方法
2020/05/15 Javascript
[03:14]2014DOTA2西雅图国际邀请赛 EG战队巡礼
2014/07/07 DOTA
Python 解析XML文件
2009/04/15 Python
Python 不同对象比较大小示例探讨
2014/08/21 Python
Python第三方库的安装方法总结
2016/06/06 Python
浅谈Django REST Framework限速
2017/12/12 Python
Python设计模式之原型模式实例详解
2019/01/18 Python
Python实现直方图均衡基本原理解析
2019/08/08 Python
详解用python计算阶乘的几种方法
2019/08/14 Python
Python模块/包/库安装的六种方法及区别
2020/02/24 Python
python 将列表里的字典元素合并为一个字典实例
2020/09/01 Python
使用phonegap进行本地存储的实现方法
2017/03/31 HTML / CSS
Burberry英国官网:英国标志性奢侈品牌
2017/03/29 全球购物
英国家用电器折扣网站:Electrical Discount UK
2018/09/17 全球购物
家得宝官网:The Home Depot(全球最大的家居装饰专业零售商)
2018/12/17 全球购物
关于赌博的检讨书
2014/01/24 职场文书
小学教师办公室制度
2014/02/03 职场文书
客服部班长工作责任制
2014/02/25 职场文书
幼儿园大班开学教师寄语
2014/04/03 职场文书
师德师风个人反思
2014/04/28 职场文书
放射科岗位职责
2015/02/14 职场文书
与Windows10相比Windows11有哪些改进?值不值得升级?
2021/11/21 数码科技
浅谈Node的内存泄露问题
2022/05/06 NodeJs