canvas绘制动态加载圆形百分比

本文介绍了一个使用HTML5 Canvas和CSS3实现的技能加载动画效果。该动画通过JavaScript控制动态展示技能加载进度,并以百分比形式显示。文章包含了完整的代码示例,有助于读者理解和实现类似效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <div>
            <canvas width="152" height="152" id="process"></canvas>
            <h4>CSS3</h4>
        </div>  
    </body>
    <script type="text/javascript">

    //  技能
    var c = document.getElementById("process");
    var ctx = c.getContext('2d');
    var centerX = c.width/2;   //Canvas中心点x轴坐标
    var centerY = c.height/2;  //Canvas中心点y轴坐标
    var rad = Math.PI*2/100; //将360度分成100份,那么每一份就是rad度
    var speed = 0.4;         //加载的快慢就靠它了
//  var sec = document.getElementById("section-5th");
//滚动条距离顶部高度 
//  window.onscroll = function(){
//          var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; 
//          if(sec.offsetTop < scrollTop + 100 && speed < 80){
//              animate();
//              
//          } 
//          
//      }
    animate();

    function animate(){
        window.requestAnimationFrame(function(){
            if(speed < 80 ){
                animate();
            }
        }); 
        ctx.clearRect(0, 0, c.width, c.height);
        speed += 0.4;
        drawCircle(ctx,speed);
    };


    function drawCircle(ctx,percent){
        //画白色的静态圆
        ctx.save();  
        ctx.strokeStyle = "#D8CCBE";  
        ctx.lineWidth = 12; 
        ctx.beginPath();
        ctx.arc(centerX, centerY, 68, 0, Math.PI*2, false);  
        ctx.stroke();     
        ctx.closePath(); 
        ctx.restore();


        //画进度环
        ctx.save();
        ctx.strokeStyle = "#E87E04";
        ctx.lineWidth = 12;
        ctx.beginPath();
        ctx.arc(centerX, centerY, 68, -Math.PI/2, -Math.PI/2 +percent*rad, false);
        ctx.stroke();     
        ctx.closePath();  
        ctx.restore();

        //百分比文字绘制
        ctx.save();
        ctx.fillStyle = "#474d5d";
        ctx.font = "bold 21px Arial";

        //绘制字体并指定位置
        ctx.fillText(percent.toFixed(0) + '%', centerX-20, centerY+10);
        ctx.restore();
    }


    </script>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值