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 相关文章推荐
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
Aug 15 HTML / CSS
css3实现多个元素依次显示效果
Dec 12 HTML / CSS
html5触摸事件判断滑动方向的实现
Jun 05 HTML / CSS
关于HTML5的22个初级技巧(图文教程)
Jun 21 HTML / CSS
html5贪吃蛇游戏使用63行代码完美实现
Jun 25 HTML / CSS
canvas进阶之如何画出平滑的曲线
Oct 15 HTML / CSS
Html5 滚动穿透的方法
May 13 HTML / CSS
前端使用canvas生成盲水印的加密解密的实现
Dec 16 HTML / CSS
纯CSS实现酷炫的霓虹灯效果
Apr 13 HTML / CSS
CSS几步实现赛博朋克2077风格视觉效果
Jun 16 HTML / CSS
css中有哪些方式可以隐藏页面元素及区别
Jun 16 HTML / CSS
html解决浏览器记住密码输入框的问题
May 07 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+memcache实现的网站在线人数统计代码
2014/07/04 PHP
php之readdir函数用法实例
2014/11/13 PHP
PHP实现的简单异常处理类示例
2017/05/04 PHP
Yii框架实现图片上传的方法详解
2017/05/20 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
2018/05/24 PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
2020/04/22 PHP
JavaScript toFixed() 方法
2010/04/15 Javascript
cnblogs 代码高亮显示后的代码复制问题解决实现代码
2011/12/14 Javascript
javascript 图片裁剪技巧解读
2012/11/15 Javascript
动态的改变IFrame的高度实现IFrame自动伸展适应高度
2012/12/28 Javascript
JavaScript 实现打印,打印预览,打印设置
2014/12/30 Javascript
TypeScript具有的几个不同特质
2015/04/07 Javascript
简单实现js页面切换功能
2021/01/10 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
2016/12/27 Javascript
JS求解三元一次方程组值的方法
2017/01/03 Javascript
jQuery插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
2017/03/22 jQuery
详解webpack es6 to es5支持配置
2017/05/04 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
2018/05/09 jQuery
深入浅析nuxt.js基于ssh的vue通用框架
2019/05/21 Javascript
解决Vue动态加载本地图片问题
2019/10/09 Javascript
微信小程序实现同时上传多张图片
2020/02/03 Javascript
[44:47]Ti4 循环赛第三日 iG vs NaVi
2014/07/12 DOTA
[01:45:05]VGJ.T vs Newbee Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
[46:12]完美世界DOTA2联赛循环赛 DM vs Matador BO2第一场 11.04
2020/11/04 DOTA
python网络编程示例(客户端与服务端)
2014/04/24 Python
python简单猜数游戏实例
2015/07/09 Python
ansible作为python模块库使用的方法实例
2017/01/17 Python
在python中pandas的series合并方法
2018/11/12 Python
opencv-python 提取sift特征并匹配的实例
2019/12/09 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
2020/01/06 Python
Java Spring项目国际化(i18n)详细方法与实例
2020/03/20 Python
收集的22款给力的HTML5和CSS3帮助工具
2012/09/14 HTML / CSS
商务英语应届生自我鉴定
2013/12/08 职场文书
小学生手册家长评语
2014/04/16 职场文书
2015年清明节活动总结
2015/02/09 职场文书
python scrapy简单模拟登录的代码分析
2021/07/21 Python