<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
#myCanvas {
position: absolute;
top: 100px;
left: 100px;
border: 1px solid gray;
}
</style>
</head>
<body>
<canvas id="myCanvas" width="200" height="100"></canvas>
</body>
<script type="text/javascript">
// myCanvas
var c = document.getElementById("myCanvas");
var cxt = c.getContext("2d");
function setCircle(diff, color) {
cxt.beginPath(140, 50);
// 指定 坐标 x y 半径 圆环的起始位置、最终位置 、时针方向
cxt.arc(150, 50, 40, Math.PI * .8, Math.PI * diff, false);
// cxt.fillStyle = "#FF0000"; // 填充样式搭配fill
cxt.strokeStyle = color
cxt.lineWidth = 5; // 线的宽度,搭配stroke
cxt.stroke()
// cxt.fill();
cxt.closePath();
}
setCircle(.2, '#efefef')
var targetPos = 2
// 动态渲染图表
var curPos = .8 // 设置绘制画布时的初始位置
var timer = setInterval(function () {
if (curPos >= targetPos) {
clearInterval(timer)
}
curPos = curPos + 0.01 // 更新当前位置
setCircle(curPos, '#FF0000') // 基于最新的位置设置图形
}, 10)
</script>
</html>
效果如下: