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背景_动力节点Java学院整理
Jul 11 HTML / CSS
基于CSS3制作立体效果导航菜单
Jan 12 HTML / CSS
CSS3之2D与3D变换的实现方法
Jan 28 HTML / CSS
css3实现背景模糊的三种方式(小结)
May 15 HTML / CSS
用HTML5 Canvas API中的clearRect()方法实现橡皮擦功能
Mar 15 HTML / CSS
HTML5 device access 设备访问详解
May 24 HTML / CSS
HTML5 标准将把互联网视频扔回到黑暗时代
Feb 10 HTML / CSS
使用jquery实现HTML5响应式导航菜单教程
Apr 02 HTML / CSS
HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图
Aug 31 HTML / CSS
canvas绘制圆角头像的实现方法
Jan 17 HTML / CSS
css 中多种边框的实现小窍门
Apr 07 HTML / CSS
css中z-index: 0和z-index: auto的区别
Aug 23 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批量更改数据库表前缀实现方法
2013/10/26 PHP
php数组去重复数据示例
2014/02/25 PHP
php实现读取手机客户端浏览器的类
2015/01/09 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
2016/02/23 PHP
利用php操作memcache缓存的基础方法示例
2017/08/02 PHP
php strftime函数的详细用法
2018/06/21 PHP
php使用QueryList轻松采集js动态渲染页面方法
2018/09/11 PHP
模拟用户操作Input元素,不会触发相应事件
2007/05/11 Javascript
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
2012/01/08 Javascript
HTML上传控件取消选择
2013/03/06 Javascript
javascript判断机器是否联网的2种方法
2013/08/09 Javascript
javascript 动态创建表格
2015/01/08 Javascript
js对象的复制继承实例
2015/01/10 Javascript
浅谈JavaScript中的作用域和闭包问题
2015/07/07 Javascript
js实现索引图片切换效果
2015/11/21 Javascript
js使用cookie记录用户名的方法
2015/11/26 Javascript
jQuery+css实现炫目的动态块漂移效果
2016/01/28 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
详解react-native WebView 返回处理(非回调方法可解决)
2018/02/27 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
2019/04/02 Javascript
vue 实现Web端的定位功能 获取经纬度
2019/08/08 Javascript
解决antd datepicker 获取时间默认少8个小时的问题
2020/10/29 Javascript
Linux CentOS Python开发环境搭建教程
2018/11/28 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
2019/01/22 Python
python redis 删除key脚本的实例
2019/02/19 Python
python list数据等间隔抽取并新建list存储的例子
2019/11/27 Python
python如何查看安装了的模块
2020/06/23 Python
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
Linux文件系统类型
2012/09/16 面试题
JVM是一个编译程序还是解释程序
2012/09/11 面试题
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
奠基仪式致辞
2015/07/30 职场文书
导游词之塘栖古镇
2019/12/04 职场文书
CSS3 制作的悬停缩放特效
2021/04/13 HTML / CSS
Python Pygame实战之塔防游戏的实现
2022/03/17 Python
Python+DeOldify实现老照片上色功能
2022/06/21 Python