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 相关文章推荐
JavaScript方法和技巧大全
Dec 27 Javascript
js 判断浏览器类型 去全角、半角空格 自动关闭当前窗口
Apr 10 Javascript
JS 的应用开发初探(mootools)
Dec 19 Javascript
js作用域及作用域链概念理解及使用
Apr 15 Javascript
showModelDialog弹出文件下载窗口的使用示例
Nov 19 Javascript
JavaScript格式化日期时间的方法和自定义格式化函数示例
Apr 04 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
Oct 08 Javascript
webpack 单独打包指定JS文件的方法
Feb 22 Javascript
详解Angular6 热加载配置方案
Aug 18 Javascript
解决vue+element 键盘回车事件导致页面刷新的问题
Aug 25 Javascript
js的各种数据类型判断的介绍
Jan 19 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
Nov 02 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缓存类代码(附详细说明)
2011/06/09 PHP
Zend的Registry机制的使用说明
2013/05/02 PHP
解析php类的注册与自动加载
2013/07/05 PHP
php使用fopen创建utf8编码文件的方法
2014/10/31 PHP
php采集中国代理服务器网的方法
2015/06/16 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
php无限级分类实现方法分析
2016/10/19 PHP
php实现数组中出现次数超过一半的数字的统计方法
2018/10/14 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
2019/05/14 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
2020/04/13 PHP
jquery 常用操作整理 基础入门篇
2009/10/14 Javascript
JavaScript中的变量声明早于赋值分析
2012/03/01 Javascript
$.getJSON在IE下失效的原因分析及解决方法
2013/06/16 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
2015/04/07 Javascript
纯javascript实现分页(两种方法)
2015/08/26 Javascript
jquery判断输入密码两次是否相等
2020/04/22 Javascript
jQuery添加删除DOM元素方法详解
2016/01/18 Javascript
JavaScript对象数组排序实例方法浅析
2016/06/15 Javascript
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
2019/05/16 Javascript
vue router 跳转时打开新页面的示例方法
2019/07/28 Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
2020/05/13 Javascript
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
微信小程序实现选项卡滑动切换
2020/10/22 Javascript
js用正则表达式筛选年月日的实例方法
2021/01/04 Javascript
Python+matplotlib实现计算两个信号的交叉谱密度实例
2018/01/08 Python
Centos下实现安装Python3.6和Python2共存
2018/08/15 Python
python远程连接MySQL数据库
2019/04/19 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
Django serializer优化类视图的实现示例
2020/07/16 Python
Python爬虫防封ip的一些技巧
2020/08/06 Python
详解HTML5中ol标签的用法
2015/09/08 HTML / CSS
波兰家具和室内装饰品购物网站:Vivre
2018/04/10 全球购物
人事档案接收函
2014/01/12 职场文书
竞选学委演讲稿
2014/09/13 职场文书