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 相关文章推荐
JavaScript中的集合及效率
Jan 08 Javascript
基于Asp.net与Javascript控制的日期控件
May 22 Javascript
JavaScript 的继承
Oct 01 Javascript
Javascript排序算法之计数排序的实例
Apr 05 Javascript
JS弹出可拖拽可关闭的div层完整实例
Feb 13 Javascript
纯js实现仿QQ邮箱弹出确认框
Apr 29 Javascript
jquery实现列表上下移动功能
Feb 25 Javascript
jQuery鼠标移动图片上实现放大效果
Jun 25 jQuery
利用vue开发一个所谓的数独方法实例
Dec 21 Javascript
利用SpringMVC过滤器解决vue跨域请求的问题
Feb 10 Javascript
vue和better-scroll实现列表左右联动效果详解
Apr 29 Javascript
vue 表单输入框不支持focus及blur事件的解决方案
Nov 17 Vue.js
微信小程序 两种为对象属性赋值的方式详解
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/11/25 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
PHP实现一个多功能购物网站的案例
2017/09/13 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
JavaScript 弹出窗体点击按钮返回选择数据的实现
2010/04/01 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
jQuery动画特效实例教程
2014/08/29 Javascript
JavaScript几种数组去掉重复值的方法推荐
2016/04/12 Javascript
AngularJS  自定义指令详解及实例代码
2016/09/14 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
2017/01/20 Javascript
Vue.js学习示例分享
2017/02/05 Javascript
原生js轮播特效
2017/05/18 Javascript
图片加载完成再执行事件的实例
2017/11/16 Javascript
Angular开发实践之服务端渲染
2018/03/29 Javascript
实例详解ztree在vue项目中使用并且带有搜索功能
2018/08/24 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
python getopt 参数处理小示例
2009/06/09 Python
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
python进阶教程之词典、字典、dict
2014/08/29 Python
Python类属性的延迟计算
2016/10/22 Python
PyQT5 QTableView显示绑定数据的实例详解
2019/06/25 Python
python中dict使用方法详解
2019/07/17 Python
python可视化text()函数使用详解
2020/02/11 Python
python读取当前目录下的CSV文件数据
2020/03/11 Python
CSS3中线性颜色渐变的一些实现方法
2015/07/14 HTML / CSS
Hotels.com印度:酒店预订
2019/05/11 全球购物
全球最大的生存食品、水和装备专用在线市场:BePrepared.com
2020/01/02 全球购物
简历中个人自我评价分享
2014/03/15 职场文书
软环境建设心得体会
2014/09/09 职场文书
四风问题查摆剖析材料
2014/10/11 职场文书
实习生辞职信范文
2015/03/02 职场文书
幼儿园工作总结2015
2015/04/01 职场文书
离开雷锋的日子观后感
2015/06/09 职场文书
反邪教学习心得体会
2016/01/15 职场文书
Mysql中mvcc各场景理解应用
2022/08/05 MySQL