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 完美实现圆角效果
Jul 13 HTML / CSS
css3实现3d旋转动画特效
Mar 10 HTML / CSS
HTML5实现Notification API桌面通知功能
Mar 02 HTML / CSS
html5中去掉input type date默认样式的方法
Sep 06 HTML / CSS
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
Jan 31 HTML / CSS
HTML5 Canvas画线技巧——实现绘制一个像素宽的细线
Aug 02 HTML / CSS
canvas像素点操作之视频绿幕抠图
Sep 11 HTML / CSS
HTML5的postMessage的使用手册
Dec 19 HTML / CSS
浅析数据存储的三种方式 cookie sessionstorage localstorage 的异同
Jun 04 HTML / CSS
HTML5 body设置全屏背景图片的示例代码
Dec 08 HTML / CSS
使用css样式设计一个简单的html登陆界面的实现
Mar 30 HTML / CSS
DIV CSS实现网页背景半透明效果
Dec 06 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
c#中的实现php中的preg_replace
2009/12/21 PHP
php实现计数器方法小结
2015/01/05 PHP
PHP设置images目录不充许http访问的方法
2016/11/01 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
Laravel框架实现多数据库连接操作详解
2019/07/12 PHP
通过ifame指向的页面高度调整iframe的高度
2006/10/05 Javascript
JavaScript中为元素加上name属性的方法
2011/05/09 Javascript
解决Jquery鼠标经过不停滑动的问题
2014/03/03 Javascript
jQuery中Form相关知识汇总
2015/01/06 Javascript
jQuery事件的绑定、触发、及监听方法简单说明
2016/05/10 Javascript
Avalonjs 实现简单购物车功能(实例代码)
2017/02/07 Javascript
微信小程序 图片上传实例详解
2017/05/05 Javascript
Vue+SpringBoot开发V部落博客管理平台
2017/12/27 Javascript
react 创建单例组件的方法
2018/04/26 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
2018/10/16 Javascript
在Python的Flask框架中使用模版的入门教程
2015/04/20 Python
python实现根据ip地址反向查找主机名称的方法
2015/04/29 Python
Python内存管理方式和垃圾回收算法解析
2017/11/11 Python
基于Python实现的ID3决策树功能示例
2018/01/02 Python
pandas groupby 分组取每组的前几行记录方法
2018/04/20 Python
python实现生成Word、docx文件的方法分析
2019/08/30 Python
python怎么判断模块安装完成
2020/06/19 Python
python ssh 执行shell命令的示例
2020/09/29 Python
CSS3的 fit-content实现水平居中
2017/09/07 HTML / CSS
Lookfantastic葡萄牙官方网站:欧洲第一大化妆品零售商
2018/03/17 全球购物
CK澳大利亚官网:Calvin Klein澳大利亚
2020/12/12 全球购物
建筑人员岗位职责
2013/12/25 职场文书
刊首寄语大全
2014/04/11 职场文书
如何撰写一封出色的求职信
2014/04/27 职场文书
倡导文明标语
2014/06/16 职场文书
教师民族团结演讲稿
2014/08/27 职场文书
党的群众路线对照检查材料
2014/08/27 职场文书
要账委托书范本
2014/09/15 职场文书
党的群众路线教育实践活动个人整改措施
2014/10/27 职场文书
2016年教师节感恩寄语
2015/12/04 职场文书
考生诚信考试承诺书(2016版)
2016/03/25 职场文书