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 相关文章推荐
js 刷新页面的代码小结 推荐
Apr 02 Javascript
Lab.js初次使用笔记
Feb 28 Javascript
改变checkbox默认选中状态及取值的实现代码
May 26 Javascript
AngularGauge 属性解析详解
Sep 06 Javascript
原生JS版和jquery版实现checkbox的全选/全不选/点选/行内点选(Mr.Think)
Oct 29 Javascript
浅析javascript中的Event事件
Dec 09 Javascript
js图片上传的封装代码
Aug 01 Javascript
200行代码实现blockchain 区块链实例详解
Mar 14 Javascript
小程序云开发之用户注册登录
May 18 Javascript
vue源码nextTick使用及原理解析
Aug 13 Javascript
javascript将扁平的数据转为树形结构的高效率算法
Feb 27 Javascript
JavaScript 几种循环方式以及模块化的总结
Sep 03 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
后宫无数却洁身自好的男主,唐三只爱小舞
2020/03/02 国漫
php 模拟POST提交的2种方法详解
2013/06/17 PHP
使用php批量删除数据库下所有前缀为prefix_的表
2014/06/09 PHP
php分页原理 分页代码 分页类制作教程
2016/09/23 PHP
JavaScript Event学习第十一章 按键的检测
2010/02/10 Javascript
js中function()使用方法
2013/12/24 Javascript
js实现俄罗斯方块小游戏分享
2014/01/31 Javascript
JavaScript判断IE版本型号
2015/07/27 Javascript
全国省市二级联动下拉菜单 js版
2016/05/10 Javascript
使用bootstrap3开发响应式网站
2016/05/12 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
seajs学习教程之基础篇
2016/10/20 Javascript
深入理解AngularJS中的ng-bind-html指令
2017/03/27 Javascript
Thinkphp5微信小程序获取用户信息接口的实例详解
2017/09/26 Javascript
Vue中对拿到的数据进行A-Z排序的实例
2018/09/25 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
2019/07/24 Javascript
vue开发中遇到的问题总结
2020/04/07 Javascript
[01:01:14]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第一场 11.21
2020/11/23 DOTA
python查询mysql中文乱码问题
2014/11/09 Python
Django 生成登陆验证码代码分享
2017/12/12 Python
Python Django Vue 项目创建过程详解
2019/07/29 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
2020/05/15 Python
python里的单引号和双引号的有什么作用
2020/06/17 Python
一款纯css3实现的鼠标经过按钮特效教程
2014/11/09 HTML / CSS
canvas绘制视频封面的方法
2018/02/05 HTML / CSS
机械设计及其自动化专业推荐信
2013/10/31 职场文书
酒店保安员岗位职责
2014/01/31 职场文书
致400米运动员广播稿
2014/02/07 职场文书
建筑结构施工求职信
2014/07/11 职场文书
讲党性心得体会
2014/09/03 职场文书
城市轨道交通工程职业生涯规划书范文
2014/09/16 职场文书
思想作风建设心得体会
2014/10/22 职场文书
二年级上册数学教学计划
2015/01/20 职场文书
《鸡兔同笼》教学反思
2016/02/19 职场文书
python用字节处理文件实例讲解
2021/04/13 Python
JavaScript阻止事件冒泡的方法
2021/12/06 Javascript