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 对象是否存在判断
Jul 15 Javascript
使用js画图之饼图
Jan 12 Javascript
详解Javascript数据类型的转换规则
Dec 12 Javascript
关于vue.js组件数据流的问题
Jul 26 Javascript
AngularJS双向数据绑定原理之$watch、$apply和$digest的应用
Jan 30 Javascript
浅谈Vue2.0中v-for迭代语法的变化(key、index)
Mar 06 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
Mar 07 Javascript
vue中使用props传值的方法
May 08 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
Jun 22 Javascript
bootstrap table插件动态加载表头
Jul 19 Javascript
在Vue中获取自定义属性方法:data-id的实例
Sep 09 Javascript
javascript实现电商放大镜效果
Nov 23 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
关于拼配咖啡,你要知道
2021/03/03 咖啡文化
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
php把时间戳转换成多少时间之前函数的实例
2016/11/16 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
prototype class详解
2006/09/07 Javascript
js实现图片轮换效果代码
2013/04/16 Javascript
js 文本滚动效果的实例代码
2013/08/17 Javascript
JS操作数据库的实例代码
2013/10/17 Javascript
查看大图功能代码jquery版
2013/11/05 Javascript
JS、DOM和JQuery之间的关系示例分析
2014/04/09 Javascript
jquery的总体架构分析及实现示例详解
2014/11/08 Javascript
JavaScript把数组作为堆栈使用的方法
2015/03/20 Javascript
JavaScript实现搜索框的自动完成功能(一)
2016/02/25 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
详解nodejs express下使用redis管理session
2017/04/24 NodeJs
vue实现点击隐藏与显示实例分享
2019/02/13 Javascript
js如何获取图片url的Blob值并预览示例代码
2019/03/07 Javascript
详解JavaScript栈内存与堆内存
2019/04/04 Javascript
Openlayers实现测量功能
2020/09/25 Javascript
[04:44]显微镜下的DOTA2第二期——你所没有注意到的细节
2014/06/20 DOTA
Python中使用gzip模块压缩文件的简单教程
2015/04/08 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
2017/03/20 Python
Python爬虫天气预报实例详解(小白入门)
2018/01/24 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
Python实现AI自动抠图实例解析
2020/03/05 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
2020/07/14 Python
Shopee菲律宾:在线购买和出售
2019/11/25 全球购物
编写类String 的构造函数、析构函数和赋值函数
2012/09/09 面试题
什么是托管函数?托管函数有什么用?
2014/06/15 面试题
大专毕业生简历的自我评价
2013/10/20 职场文书
工商管理专业职业生涯规划
2014/01/01 职场文书
企业后勤岗位职责
2014/02/28 职场文书
消防演习感想
2015/08/10 职场文书
2016年庆祝六一儿童节活动总结
2016/04/06 职场文书
Java框架入门之简单介绍SpringBoot框架
2021/06/18 Java/Android