canvas实现loading的效果

<!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%。

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值