<!DOCTYPE html>
<html lang="en">
<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>canvas实现loading</title>
<style>
*{
padding: 0;
margin: 0;
}
#box{
width: 500px;
height: 500px;
text-align: center;
font-size: 20px;
font-weight: 700;
color: red;
}
</style>
</head>
<body>
<canvas id="can" height="500px;" width="500px"></canvas>
<div id="box"></div>
<script>
var can = document.getElementById("can");
var oBox = document.getElementById('box');
var ctx = can.getContext('2d');
CanvasRenderingContext2D.prototype.sector = function (x, y, r, sDeg, eDeg) {
//圆心点,半径,角度,起始角度,终止角度
this.save();
this.beginPath();
this.moveTo(x, y);
//角度=》弧度
this.arc(x, y, r, sDeg * Math.PI / 180, eDeg * Math.PI / 180, false);
this.closePath();
this.restore();
return this;
}
var timer;
var angle = 0;
var per;
// angle / 360 = per / 100
// 5 * angle / 18
ctx.fillStyle = 'red';
timer = setInterval(() => {
angle += 5;
ctx.sector(250, 250, 100, 0, angle).fill();
per = (5 * angle / 18).toFixed(2);
oBox.innerHTML = "加载中" + per + "%";
if (angle === 360) {
clearInterval(timer);
oBox.innerHTML = "加载完成!";
}
}, 200);
</script>
</body>
</html>
感觉像是一个加载的过程,下面有百分数对应着上面的圆形一直加载到100%。