运用canvas绘制出时钟效果

<!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;
        }
        canvas{
            border: 1px solid red;
            margin: 0 auto;
            display: block;
        }
    </style>
</head>
<body>
    <canvas id="canvas" width="800" height="800"></canvas>
    <script>
        var canvas = document.getElementById("canvas");
        context = canvas.getContext("2d");
        setInterval(function(){
            context.clearRect(0,0,800,800)
            // 获取当前的时间
        var now = new Date();
        var sec = now.getSeconds();
        var min = now.getMinutes();
        var hor = now.getHours();
        console.log(hor+":"+min+":"+sec);

        // 刻度 公式  60*Math.PI/180
        for(var i=0;i<12;i++){
            context.save();
            context.beginPath();
            context.translate(390,390);
            context.rotate(i*30*Math.PI/180);
            context.moveTo(0,-380);
            context.lineTo(0,-360);
            context.stroke();
            context.closePath();
            // 还回来
            context.restore();
        }

        // 分刻度
        for(var i=0;i<60;i++){
            context.save();
            context.beginPath();
            context.translate(390,390);
            context.rotate(i*6*Math.PI/180);
            context.lineWidth = 8;
            context.moveTo(0,-380);
            context.lineTo(0,-370);
            context.strokeStyle = "pink";
            context.stroke();
            context.closePath();
            // 还回来
            context.restore();
        }

        
        // 秒针
             context.save();
            context.beginPath();
            context.translate(390,390);
            context.rotate(sec*6*Math.PI/180);
            context.lineWidth = 3;
            context.moveTo(0,17);
            context.lineTo(0,-300);
            context.strokeStyle = "red";
            context.stroke();
            context.closePath();
            // 还回来
            context.restore();

        context.beginPath();
        context.lineWidth = 10;
        context.strokeStyle = "teal"
        context.arc(390,390,380,0,2*Math.PI);
        context.stroke();
        context.closePath();
        },1000)
        
        
    </script>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值