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阻止冒泡和HTML默认操作
Nov 17 Javascript
基于Jquery制作的幻灯片图集效果打包下载
Feb 12 Javascript
PHP 数组current和next用法分享
Mar 05 Javascript
jQuery中常用的遍历函数用法实例总结
Sep 01 Javascript
JavaScript动态插入CSS的方法
Dec 10 Javascript
js console.log打印对像与数组用法详解
Jan 21 Javascript
jQuery UI插件实现百度提词器效果
Nov 21 Javascript
js时间戳与日期格式之间转换详解
Dec 11 Javascript
Angular2整合其他插件的方法
Jan 20 Javascript
JS实现的汉字与Unicode码相互转化功能分析
May 25 Javascript
解决vue中post方式提交数据后台无法接收的问题
Aug 11 Javascript
详细聊聊浏览器是如何看闭包的
Nov 11 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
PHP5函数小全(分享)
2013/06/06 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
2016/04/26 PHP
JavaScript-世界上误解最深的语言分析
2007/08/12 Javascript
一段批量给页面上的控件赋值js
2010/06/19 Javascript
js 字符串转化成数字的代码
2011/06/29 Javascript
JavaScript中的关键字&quot;VAR&quot;使用详解 分享
2013/07/31 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
微信小程序 获取微信OpenId详解及实例代码
2016/10/31 Javascript
原生js实现可爱糖果数字时间特效
2016/12/30 Javascript
vue教程之toast弹框全局调用示例详解
2020/08/24 Javascript
AngularJs 延时器、计时器实例代码
2017/09/16 Javascript
JavaScript实现修改伪类样式
2017/11/27 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
2018/11/28 Javascript
Express结合Webpack的全栈自动刷新
2019/05/23 Javascript
微信小程序开发注意指南和优化实践(小结)
2019/06/21 Javascript
vue项目中使用vue-layer弹框插件的方法
2020/03/11 Javascript
vue-video-player视频播放器使用配置详解
2020/10/23 Javascript
Python中使用HTMLParser解析html实例
2015/02/08 Python
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
Python实现破解12306图片验证码的方法分析
2017/12/29 Python
pyqt5使用按钮进行界面的跳转方法
2019/06/19 Python
使用python接受tgam的脑波数据实例
2020/04/09 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
css3个性化字体_动力节点Java学院整理
2017/07/12 HTML / CSS
html5实现微信打飞机游戏
2014/03/27 HTML / CSS
linux面试题参考答案(9)
2016/01/29 面试题
JAVA软件工程师测试题
2014/07/25 面试题
生产车间班组长岗位职责
2014/01/06 职场文书
小学生元旦广播稿
2014/02/21 职场文书
学雷锋活动倡议书
2014/08/30 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
杜甫草堂导游词
2015/02/03 职场文书
千手观音观后感
2015/06/03 职场文书
机械生产实习心得体会
2016/01/22 职场文书
《社戏》教学反思
2016/02/22 职场文书
CSS实现背景图片全屏铺满自适应的3种方式
2022/07/07 HTML / CSS