HTML5canvas 绘制一个圆环形的进度表示实例


Posted in Javascript onDecember 16, 2016

HTML5 canvas 绘制圆环形进度

先看一下画出来的效果,如下图,这样一个圆环形的进度.
HTML5canvas 绘制一个圆环形的进度表示实例

 我这里使用HTML5的Canvas来要制作这样一个圆环形的进度,

首先是HTML页面,HTML5的文档标识是:

<!DOCTYPE html>

 这个文档标识要比HTML4的简单多了.

 第二步,在页面上创建一个Canvas画布元素:

<canvas class="process" width="48px" height="48px">61%</canvas>

 我这里创建了一个长宽都是48像素的画布,因为我要画的圆外直径是48个像素的,在canvas元素中间写的是"61%",这个文字可不是显示在圆环中间的那个哦,这个61%是当老的浏览器不支持canvas元素时显示的文字.

好了,到此为止HTML页面的内容就基本完成了,接下来就交给Javascript了,用Javascript来描绘圆环. 

function drawProcess() { 
  // 选出页面上所有class为process的canvas元素,然后迭代每一个元素画图(这里用Jquery的选择器选的) 
  $('canvas.process').each(function() { 
      // 第一部先拿到canvas标签中间的文字,就是那个61%(这里的stringTrim方法是我自己的方法,去前后空格的方法很多的,这里就不贴出来了) 
    var text = commonutil.stringTrim($(this).text()); 
    var process = text.substring(0, text.length-1); 
         
      // 一个canvas标签 
    var canvas = this; 
      // 拿到绘图上下文,目前只支持"2d" 
    var context = canvas.getContext('2d'); 
  // 将绘图区域清空,如果是第一次在这个画布上画图,画布上没有东西,这步就不需要了 
    context.clearRect(0, 0, 48, 48); 
     
  // ***开始画一个灰色的圆 
    context.beginPath(); 
      // 坐标移动到圆心 
    context.moveTo(24, 24); 
      // 画圆,圆心是24,24,半径24,从角度0开始,画到2PI结束,最后一个参数是方向顺时针还是逆时针 
    context.arc(24, 24, 24, 0, Math.PI * 2, false); 
    context.closePath(); 
      // 填充颜色 
    context.fillStyle = '#ddd'; 
    context.fill(); 
      // ***灰色的圆画完 
     
    // 画进度 
    context.beginPath(); 
      // 画扇形的时候这步很重要,画笔不在圆心画出来的不是扇形 
    context.moveTo(24, 24); 
      // 跟上面的圆唯一的区别在这里,不画满圆,画个扇形 
    context.arc(24, 24, 24, 0, Math.PI * 2 * process / 100, false); 
    context.closePath(); 
    context.fillStyle = '#e74c3c'; 
    context.fill(); 
 
    // 画内部空白 
    context.beginPath(); 
    context.moveTo(24, 24); 
    context.arc(24, 24, 21, 0, Math.PI * 2, true); 
    context.closePath(); 
    context.fillStyle = 'rgba(255,255,255,1)'; 
    context.fill(); 
     
  // 画一条线 
    context.beginPath(); 
    context.arc(24, 24, 18.5, 0, Math.PI * 2, true); 
    context.closePath(); 
      // 与画实心圆的区别,fill是填充,stroke是画线 
    context.strokeStyle = '#ddd'; 
    context.stroke(); 
     
      //在中间写字 
    context.font = "bold 9pt Arial"; 
    context.fillStyle = '#e74c3c'; 
    context.textAlign = 'center'; 
    context.textBaseline = 'middle'; 
    context.moveTo(24, 24); 
    context.fillText(text, 24, 24); 
  }

好了,画完了.要看到效果别忘了调用一下画图的drawprocess方法哦.

HTML5canvas 绘制一个圆环形的进度表示实例大小: 2.4 KB 查看图片附件

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
jquery重新播放css动画所遇问题解决
Aug 21 Javascript
jQuery插件slick实现响应式移动端幻灯片图片切换特效
Apr 12 Javascript
jQuery事件绑定与解除绑定实现方法
Apr 15 Javascript
JQuery zClip插件实现复制页面内容到剪贴板
Nov 02 Javascript
jQuery实现限制文本框的输入长度
Jan 11 Javascript
vue-router跳转页面的方法
Feb 09 Javascript
AngularJS遍历获取数组元素的方法示例
Nov 11 Javascript
JS匿名函数和匿名自执行函数概念与用法分析
Mar 16 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
Sep 28 Javascript
浅析JS中什么是自定义react数据验证组件
Oct 19 Javascript
vue组件库的在线主题编辑器的实现思路
Apr 03 Javascript
vue解决跨域问题(推荐)
Nov 10 Javascript
JS数字千分位格式化实现方法总结
Dec 16 #Javascript
jquery插件锦集【推荐】
Dec 16 #Javascript
jQuery Easyui 下拉树组件combotree
Dec 16 #Javascript
JS实现字符串转驼峰格式的方法
Dec 16 #Javascript
详解js数组的完全随机排列算法
Dec 16 #Javascript
JS返回只包含数字类型的数组实例分析
Dec 16 #Javascript
基于Vue如何封装分页组件
Dec 16 #Javascript
You might like
php不用正则采集速度探究总结
2008/03/24 PHP
PHP学习笔记之二 php入门知识
2011/01/12 PHP
php操作SVN版本服务器类代码
2011/11/27 PHP
PHP实现ftp上传文件示例
2014/08/21 PHP
php中使用session防止用户非法登录后台的方法
2015/01/27 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
2015/05/25 PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
2016/09/11 PHP
Avengerls vs Newbee BO3 第二场2.18
2021/03/10 DOTA
cookie丢失问题(认证失效) Authentication (用户验证信息)也会丢失
2009/06/04 Javascript
使用js获取QueryString的方法小结
2010/02/28 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
全面解析JS字符串和正则表达式中的match、replace、exec等函数
2016/07/01 Javascript
Javascript实现代码折叠功能
2016/08/25 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
2017/01/26 Javascript
vue组件中使用props传递数据的实例详解
2018/04/08 Javascript
ElementUI多个子组件表单的校验管理实现
2019/11/07 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
基于javascript实现放大镜特效
2020/12/03 Javascript
Python下Fabric的简单部署方法
2015/07/14 Python
python深度优先搜索和广度优先搜索
2018/02/07 Python
python使用 request 发送表单数据操作示例
2019/09/25 Python
如何解决安装python3.6.1失败
2020/07/01 Python
基于python实现生成指定大小txt文档
2020/07/20 Python
详解HTML5表单新增属性
2016/12/21 HTML / CSS
5分钟实现Canvas鼠标跟随动画背景
2019/11/18 HTML / CSS
HTML5在手机端实现视频全屏展示方法
2020/11/23 HTML / CSS
Sahajan美国:阿育吠陀护肤品牌
2021/01/09 全球购物
企业内部培训方案
2014/02/04 职场文书
建筑结构施工专业推荐信
2014/02/21 职场文书
区级文明单位申报材料
2014/05/15 职场文书
高一军训决心书
2015/02/05 职场文书
2015年幼儿园学前班工作总结
2015/05/18 职场文书
交通事故调解协议书
2015/05/20 职场文书
2015年行政人事工作总结
2015/05/21 职场文书
校园歌手大赛主持词
2015/07/03 职场文书
Windows 11要来了?微软文档揭示Win11太阳谷 / Win10有两个不同版本
2021/11/21 数码科技