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 动态修改css文件的方法
Aug 05 Javascript
JQuery中的html()、text()、val()区别示例介绍
Sep 01 Javascript
javascript删除一个html元素节点的方法
Dec 20 Javascript
Lab.js初次使用笔记
Feb 28 Javascript
jquery插件validation实现验证身份证号等
Jun 04 Javascript
jquery插件NProgress.js制作网页加载进度条
Jun 05 Javascript
js检查是否关闭浏览器的方法
Aug 02 Javascript
JavaScript类的写法
Sep 17 Javascript
vue+springboot实现项目的CORS跨域请求
Sep 05 Javascript
vue cli使用融云实现聊天功能的实例代码
Apr 19 Javascript
JS代码简洁方式之函数方法详解
Jul 28 Javascript
Vue打包部署到Nginx时,css样式不生效的解决方式
Aug 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
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
2014/12/15 PHP
PHP获取当前执行php文件名的代码
2017/03/02 PHP
PHP命名空间定义与用法实例分析
2019/08/14 PHP
Js控制弹窗实现在任意分辨率下居中显示
2013/08/01 Javascript
Javascript浅谈之this
2013/12/17 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
2014/09/02 Javascript
深入理解javascript严格模式(Strict Mode)
2014/11/28 Javascript
jQuery Html控件基本操作(日常收集整理)
2016/03/11 Javascript
js验证框架实现代码分享
2016/05/18 Javascript
js接收并转化Java中的数组对象的方法
2016/08/11 Javascript
JS搜狐面试题分析
2016/12/16 Javascript
利用NPM淘宝的node.js镜像加速nvm
2017/03/27 Javascript
js 数字、字符串、布尔值的转换方法(必看)
2017/04/07 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
微信小程序实现动态设置页面标题的方法【附源码下载】
2017/11/29 Javascript
JavaScript继承与多继承实例分析
2018/05/26 Javascript
vue.js实现带日期星期的数字时钟功能示例
2018/08/28 Javascript
JavaScript显式数据类型转换详解
2019/03/18 Javascript
JS array数组检测方式解析
2020/05/19 Javascript
python如何把嵌套列表转变成普通列表
2018/03/20 Python
python3实现多线程聊天室
2018/12/12 Python
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
Python读写文件模式和文件对象方法实例详解
2019/09/17 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
Python 中list ,set,dict的大规模查找效率对比详解
2019/10/11 Python
Django 创建后台,配置sqlite3教程
2019/11/18 Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
2020/09/16 Python
What is EJB
2016/07/22 面试题
医科大学生毕业的自我评价分享
2013/11/12 职场文书
幼儿园中班下学期评语
2014/04/18 职场文书
体育运动口号
2014/06/09 职场文书
基层党建工作宣传标语
2014/06/24 职场文书
导游词之江苏溱潼古镇
2019/11/27 职场文书
python自动化调用百度api解决验证码
2021/04/13 Python
Spring事务管理下synchronized锁失效问题的解决方法
2022/03/31 Java/Android
Python find()、rfind()方法及作用
2022/12/24 Python