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和HTML5的支持状况
Oct 31 HTML / CSS
在HTML5中如何使用CSS建立不可选的文字
Oct 17 HTML / CSS
深入理解css属性的选择对动画性能的影响
Apr 20 HTML / CSS
浅谈CSS3鼠标移入图片动态提示效果(transform)
Nov 06 HTML / CSS
CSS3制作圆形滚动进度条动画的示例
Nov 05 HTML / CSS
CSS3.0实现霓虹灯按钮动画特效的示例代码
Jan 12 HTML / CSS
Html5 localStorage入门教程
Apr 26 HTML / CSS
HTML5 标准将把互联网视频扔回到黑暗时代
Feb 10 HTML / CSS
HTML5 Canvas中绘制矩形实例
Jan 01 HTML / CSS
Html5嵌入钉钉的实现示例
Jun 04 HTML / CSS
CSS完成视差滚动效果
Apr 27 HTML / CSS
html5实现点击弹出图片功能
Jul 16 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实现冒泡排序的简单实例
2016/05/26 PHP
取得父标签
2006/11/14 Javascript
IE事件对象(The Internet Explorer Event Object)
2012/06/27 Javascript
jQuery获取样式中颜色值的方法
2015/01/29 Javascript
Bootstrap每天必学之模态框(Modal)插件
2016/04/26 Javascript
Bootstrap实现弹性搜索框
2016/07/11 Javascript
js实现仿购物车加减效果
2017/03/01 Javascript
你可能不知道的JSON.stringify()详解
2017/08/17 Javascript
Angularjs按需查询实例代码
2017/10/30 Javascript
不使用 JS 匿名函数理由
2017/11/17 Javascript
不使用JavaScript实现菜单的打开和关闭效果demo
2018/05/01 Javascript
JS/HTML5游戏常用算法之追踪算法实例详解
2018/12/12 Javascript
JavaScript定时器设置、使用与倒计时案例详解
2019/07/08 Javascript
JS数组进阶示例【数组的几种函数用法】
2020/01/16 Javascript
Python多线程实例教程
2014/09/06 Python
python的格式化输出(format,%)实例详解
2018/06/01 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
python 数字类型和字符串类型的相互转换实例
2018/07/17 Python
Python2和Python3之间的str处理方式导致乱码的讲解
2019/01/03 Python
Linux下远程连接Jupyter+pyspark部署教程
2019/06/21 Python
解决pyinstaller打包运行程序时出现缺少plotly库问题
2020/06/02 Python
python实现粒子群算法
2020/10/15 Python
幼儿园园长自我鉴定
2013/10/22 职场文书
会计电算化专业个人的自我评价
2013/11/24 职场文书
高二化学教学反思
2014/01/30 职场文书
人力资源总监工作说明
2014/03/03 职场文书
新年团拜会主持词
2014/04/02 职场文书
2015年党风建设工作总结
2015/04/29 职场文书
传单、海报早OUT了,另类传单营销方案送给你!
2019/07/15 职场文书
CSS3实现模糊背景的三种效果示例
2021/03/30 HTML / CSS
CSS3 实现的图片悬停的切换按钮
2021/04/13 HTML / CSS
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python
详解Laravel制作API接口
2021/05/31 PHP
SpringDataJPA在Entity中常用的注解介绍
2021/12/06 Java/Android
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏
Python实现数据的序列化操作详解
2022/07/07 Python