canvas实现圆形进度条动画的示例代码


Posted in HTML / CSS onDecember 26, 2017

本文介绍了canvas实现圆形进度条动画,分享给大家,具体如下:

先给大家看看效果图,然后在上代码。

canvas实现圆形进度条动画的示例代码

进度条动画

1. canvas的HTML部分很简单就一个canvas标签

canvas画布的宽高是自身的属性,要在行间样式设置,若是在style设置宽高会使你画的图片变形。

<canvas id="mycanvas" width="100" height="100">
70%
</canvas>

2.画布的js代码

主要思路:效果图中是由三个圆组成的,最外层是一个有黑边的大圆,里面一个改变进度条进度的圆和一个现实百分比的圆。

注意:每画一个圆都要新建一个图层,这样可以单独设置每个图层的样式,之间不相互影响,就像ps的图层一样,一个完整的设计稿都是很多图层组成的。

var canvas = document.getElementById("mycanvas");
var context = canvas.getContext("2d");
function draw(i){
// 大圆框
context.beginPath();
context.lineWidth = 1;
context.arc(50,50,46,0,Math.PI*2);
context.strokeStyle = "grey";
context.stroke();
// 大圆
context.beginPath();
var grd = context.createLinearGradient(15,15,80,80);
grd.addColorStop(0,"red");
grd.addColorStop(0.5,"yellow");
grd.addColorStop(1,"blue");
context.arc(50,50,38,0,Math.PI*2*(i/100));
context.lineWidth = 16;
context.strokeStyle = grd;
context.stroke();
// context.fillStyle = grd;
// context.fill();
// 小圆
context.beginPath();
context.arc(50,50,30,0,Math.PI*2);
context.lineWidth = 1;
context.strokeStyle = "grey";
context.stroke();
context.fillStyle = "white";
context.fill();
// 字
context.beginPath();
context.textBaseline = "middle";
context.textAlign = "center";
context.font = "20px Arial";
context.fillStyle = "black";
context.fillText(i+"%",50,50);
}

3. 使用计时器来刷新画布,达到进度条的效果

使用context.clearRect()方法来清空画布的

var i = 0;
var progress = parseInt(canvas.innerHTML);
// console.log(progress);
var timer = setInterval(function(){
if(i >= progress){
clearInterval(timer);
}
context.clearRect(0,0,canvas.width,canvas.height);
draw(i);
i++;
},50);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
css3模拟jq点击事件的实例代码
Jul 06 HTML / CSS
CSS3 calc()会计算属性详解
Feb 27 HTML / CSS
css3 给背景设置渐变色的方法
Sep 12 HTML / CSS
实现CSS3中的border-radius(边框圆角)示例代码
Jul 19 HTML / CSS
CSS3中线性颜色渐变的一些实现方法
Jul 14 HTML / CSS
CSS3中的Media Queries学习笔记
May 23 HTML / CSS
HTML5 拖拽批量上传文件的示例代码
Mar 28 HTML / CSS
html5指南-6.如何创建离线web应用程序实现离线访问
Jan 07 HTML / CSS
HTML5对比HTML4的主要改变和改进总结
May 27 HTML / CSS
详解canvas绘制多张图的排列顺序问题
Jan 21 HTML / CSS
基于 HTML5 WebGL 实现的医疗物流系统
Oct 08 HTML / CSS
HTML静态页面获取url参数和UserAgent的实现
Aug 05 HTML / CSS
详解HTML5 录音的踩坑之旅
Dec 26 #HTML / CSS
移动HTML5前端框架—MUI的使用
Dec 18 #HTML / CSS
canvas如何绘制钟表的方法
Dec 13 #HTML / CSS
Html5百叶窗效果的示例代码
Dec 11 #HTML / CSS
详解如何通过H5(浏览器/WebView/其他)唤起本地app
Dec 11 #HTML / CSS
iphoneX 适配客户端H5页面的方法教程
Dec 08 #HTML / CSS
详解H5 活动页之移动端 REM 布局适配方法
Dec 07 #HTML / CSS
You might like
PHP:风雨欲来 路在何方?
2006/10/09 PHP
回答PHPCHINA上的几个问题:URL映射
2007/02/14 PHP
简单介绍下 PHP5 中引入的 MYSQLI的用途
2007/03/19 PHP
PHP中通过加号合并数组的一个简单方法分享
2011/01/27 PHP
PHP数组排序之sort、asort与ksort用法实例
2014/09/08 PHP
PHP实现根据数组某个键值大小进行排序的方法
2018/03/13 PHP
window.location.hash 使用说明
2010/11/08 Javascript
Firefox中autocomplete=&quot;off&quot; 设置不起作用Bug的解决方法
2011/03/25 Javascript
JavaScript中函数声明优先于变量声明的实例分析
2012/03/01 Javascript
Js数组的操作push,pop,shift,unshift等方法详细介绍
2012/12/28 Javascript
取消选中单选框radio的三种方式示例介绍
2013/12/23 Javascript
Ext GridPanel加载完数据后进行操作示例代码
2014/06/17 Javascript
PHP中CURL的几个经典应用实例
2015/01/23 Javascript
关于js里的this关键字的理解
2015/08/17 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
layui.js实现的表单验证功能示例
2017/11/15 Javascript
vue checkbox 全选 数据的绑定及获取和计算方法
2018/02/09 Javascript
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
layui数据表格 table.render 报错的解决方法
2019/09/29 Javascript
Python过滤函数filter()使用自定义函数过滤序列实例
2014/08/26 Python
Python中如何优雅的合并两个字典(dict)方法示例
2017/08/09 Python
使用python中的in ,not in来检查元素是不是在列表中的方法
2018/07/06 Python
Python Django2.0集成Celery4.1教程
2019/11/19 Python
Python多线程通信queue队列用法实例分析
2020/03/24 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
2020/06/02 Python
Python实现对word文档添加密码去除密码的示例代码
2020/12/29 Python
信息专业本科生个人的自我评价
2013/10/28 职场文书
市场营销毕业生自荐信
2013/11/23 职场文书
医德医魂心得体会
2014/09/11 职场文书
民主评议政风行风整改方案
2014/09/17 职场文书
房屋分割离婚协议书范本
2014/12/01 职场文书
大学生入党群众意见书
2015/06/02 职场文书
家长会后的感想
2015/08/11 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书