canvas闹钟


<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>时钟</title>
    <style>
        canvas{
            background-color:#57baac;
        }
    </style>
</head>
<body>
    <canvas width="667px" height="881px" id="mycanvas"></canvas>


    <script type="text/javascript">
        var a=1;
        window.onload=function(){
            setInterval(drawClock,250);
        };

function drawClock(){
    var mycanvas=document.getElementById("mycanvas");
    var context=mycanvas.getContext("2d");

//清除画布
         context.clearRect(0,0,667,881);

//外层空心圆
         context.beginPath();
         context.arc(300,300,150,0,360*Math.PI/180);
         context.closePath();
         context.strokeStyle="#f26a4c";
         context.lineWidth=30;
         context.stroke();
//内层实心圆
         context.arc(300,300,120,0,360*Math.PI/180);
         context.fillStyle="white";
         context.fill();
//刻度
         context.save();
         context.translate(300,300);
         for(var i=0;i<60;i++){
             if(i%5==0){
                 context.beginPath();
                 context.moveTo(130,0);
                 context.lineTo(150,0);
                 context.rotate(6*Math.PI/180);
                 context.closePath();
                 context.lineWidth=7;
                 context.strokeStyle="#6a686a";
                 context.stroke();
             }else{
                 context.beginPath();
                 context.moveTo(140,0);
                 context.lineTo(150,0);
                 context.rotate(6*Math.PI/180);
                 context.closePath();
                 context.lineWidth=3;
                 context.strokeStyle="#acabac";
                 context.stroke();
             }
         }
         context.restore();

//圆心结
         context.beginPath();
         context.arc(300,300,15,0,360*Math.PI/180);
         context.closePath();
         context.fillStyle="#c04a0f";
         context.fill();
//秒针
         var date=new Date();
         var second=date.getSeconds();     //获取秒数
         context.save();
         context.translate(300,300);

         context.beginPath();
         context.rotate(6*second*Math.PI/180);
         context.moveTo(0,-120);
         context.lineTo(0,60);
         context.closePath();
         context.strokeStyle="#ad4614";
         context.lineWidth=2;
         context.stroke();
         context.restore();
//分针
         var minute=date.getMinutes();
         context.save();
         context.translate(300,300);
         context.beginPath();
         context.rotate((6*minute+second/10)*Math.PI/180);
         context.moveTo(0,-15);
         context.lineTo(0,-120);
         context.closePath();
         context.strokeStyle="#f5b564";
         context.lineWidth=10;
         context.lineCap=5;
         context.stroke();
         context.restore();
//小时
         var hour=date.getHours();
         context.save();
         context.translate(300,300);
         context.beginPath();
         context.rotate((second/3600+minute/60+hour)*30*Math.PI/180);
         context.moveTo(0,-15);
         context.lineTo(0,-80);
         context.closePath();
         context.strokeStyle="#f5b564";
         context.lineWidth=10;
         context.lineCap=5;
         context.stroke();
         context.restore();

//闹钟的两个脚
//    右脚
    context.save();
    context.translate(300,300);
    context.beginPath();
    context.rotate(63*Math.PI/180);
    context.moveTo(165,0);
    context.lineTo(200,0);
    context.closePath();
    context.strokeStyle="#877c84";
    context.lineWidth=20;
    context.lineCap=5;
    context.stroke();
    context.restore();
//左脚
    context.save();
    context.translate(300,300);
    context.beginPath();
    context.rotate(117*Math.PI/180);
    context.moveTo(165,0);
    context.lineTo(200,0);
    context.closePath();
    context.strokeStyle="#877c84";
    context.lineWidth=20;
    context.lineCap=5;
    context.stroke();
    context.restore();

//上半部分
//    圆环

    context.save();
    context.beginPath();
    context.arc(300,130,100,20*Math.PI/180,160*Math.PI/180,true);
//    context.closePath();
    context.strokeStyle="#867e86";
    context.lineWidth=12;
    context.stroke();
    context.restore();

//右边耳朵
    context.save();
    context.translate(300,300);
    context.beginPath();
    context.rotate((-60)*Math.PI/180);
    context.moveTo(180,0);
    context.lineTo(225,0);
    context.strokeStyle="#eb6d4e";
    context.lineWidth=118;
    context.stroke();
    context.restore();
//左边耳朵
    context.save();
    context.translate(300,300);
    context.beginPath();
    context.rotate((-120)*Math.PI/180);
    context.moveTo(180,0);
    context.lineTo(225,0);
    context.strokeStyle="#eb6d4e";
    context.lineWidth=118;
    context.stroke();
    context.restore();
//摆钟
    if(a==1){
        a=-1;
    }else{
        a=1;
    }
            context.save();
            console.log(a);
            context.translate(300,300);
            context.beginPath();
            context.rotate(a*8*Math.PI/180);
            context.moveTo(0,-165);
            context.lineTo(0,-185);
            context.closePath();
            context.strokeStyle="black";
            context.lineWidth=15;
            context.stroke();
            context.restore();
            context.save();
            context.translate(300,300);
            context.beginPath();
            context.rotate(a*8*Math.PI/180);
            context.arc(0,-195,15,0,360*Math.PI/180);
            context.closePath();
            context.fillStyle="black";
            context.fill();
            context.restore();
     }
    </script>
</body>
</html>

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值