canvas圆形进度条(逆时针)
2024-08-24 05:48:12
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>circle</title>
</head>
<body>
<canvas id='myCanvas' width="292" height="292"></canvas> <script>
// 绘制圆
function drawCircleFn(totalReward) {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.lineWidth = 24;
ctx.lineCap = 'round';
if(totalReward){
ctx.strokeStyle = '#0FCC9E';
circleAnimateFn(ctx);
}else{
ctx.strokeStyle = '#f2f2f2';
circleNoAnimateFn(ctx);
}
} // 绘制灰色圆
function circleNoAnimateFn(ctx) {
let startAngle = 3 / 2 * Math.PI; //开始位置弧度
let percentage = 10;
let diffAngle = percentage / 100 * Math.PI * 2; //完成进度弧度值
ctx.beginPath();
ctx.arc(146, 146, 132, startAngle, diffAngle + startAngle, true);
ctx.stroke();
} // 绘制动画圆
function circleAnimateFn(ctx) {
let startAngle = 3 / 2 * Math.PI; //开始位置弧度
let percentage = 100; //完成进度值 100 - 10
let endcentage = 10;
let diffAngle = percentage / 100 * Math.PI * 2; //完成进度弧度值
let intervalFn = setInterval(function(){
if(percentage <= endcentage){
clearInterval(intervalFn);
percentage = endcentage;
}else{
percentage = percentage - 5;
diffAngle = percentage / 100 * Math.PI * 2;
ctx.beginPath();
ctx.arc(146, 146, 132, startAngle, diffAngle + startAngle, true);
ctx.stroke();
}
}, 15)
} drawCircleFn();
</script>
</body>
</html>
最新文章
- Deep Residual Learning
- DOMContentLoaded实现
- jquery 序列化
- QT 第三方串口库COM10以上无法读取问题
- NYOJ 536 开心的mdd(DP)
- The Amazing ProgressBar Control(转)
- PHP实现单例模式
- [PWA] Enable Push Notification in your web app
- 10款超酷实用的jQuery焦点图赏析及源码
- POJ 2388
- 字符串解码DecodeString
- 说说Java代理模式
- BeautifulSoup4库
- [模板] BSGS/扩展BSGS
- 雷林鹏分享:Laravel 安装
- web语言发展史
- redis安装--集群
- 前端解析websocket数据问题
- 前端js 省市联动
- (转)MYSQL远程登录权限设置