用canvas写的钟表小例子

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表盘</title>

</head>
<body>
<canvas id="cas" style="border:1px solid black" width="500" height="500">
</canvas>
</body>

</html>
<script>
  window.onload=function () {
      let cas=document.getElementById('cas').getContext('2d');

      function clock(){
          // 表盘
          cas.lineWidth=2;
          cas.font='16px arial';
          cas.strokeText('Bestdon',200,200);
          cas.stroke();
          cas.clearRect(0,0,500,500);
          cas.beginPath();
          cas.lineWidth=10;
          cas.arc(250,250,200,0,2*Math.PI);
          cas.closePath();
          cas.stroke();
        
            //字体
          cas.lineWidth=1;
          cas.font='20px arial';
          cas.strokeText('Bestdon',216,150);
          cas.stroke();


          //时针刻度
          for(var i =0 ;i<12;i++){
              cas.save();
              cas.beginPath();
              cas.translate(250,250);
              cas.rotate(Math.PI/6*i);
              cas.lineWidth=8;
              cas.moveTo(0,-200);
              cas.lineTo(0,-170);
              cas.stroke();
              cas.restore();
          }
          //分钟刻度
          for(var i =0 ;i<60;i++){
              cas.save();
              cas.beginPath();
              cas.translate(250,250);
              cas.rotate(Math.PI/30*i);
              cas.lineWidth=6;
              cas.moveTo(0,-200);
              cas.lineTo(0,-180);
              cas.stroke();
              cas.restore();
          }
            
            //    获取当地时间
          let date = new Date();
          let hours = date.getHours(),
              min = date.getMinutes(),
              sec = date.getSeconds();
          //console.log(hours);
          let hours12 = hours+min/60;
          //console.log(hours12);
          hours12=hours12>12?hours12-12:hours12;
          //console.log(hours12);

          //秒针
          cas.save();
          cas.beginPath();
          cas.translate(250,250);
          cas.rotate(sec*Math.PI/30);
          cas.lineWidth=1;
          cas.strokeStyle='red';
          cas.moveTo(0,10);
          cas.lineTo(0,-100);
          cas.stroke();
          cas.restore();
            
        //分针
          cas.save();
          cas.beginPath();
          cas.translate(250,250);
          cas.rotate(min*Math.PI/30);
          cas.lineWidth=2;
          cas.strokeStyle='blue';
          cas.moveTo(0,0);
          cas.lineTo(0,-80);
          cas.stroke();
          cas.restore();

         //时针
          cas.save();
          cas.beginPath();
          cas.translate(250,250);
          cas.rotate(hours12*(Math.PI/6));
          cas.lineWidth=4;
          cas.strokeStyle='black';
          cas.moveTo(0,0);
          cas.lineTo(0,-60);
          cas.stroke();
          cas.restore();

          cas.save();
          cas.beginPath();
          cas.translate(250,250);
          cas.lineWidth=1;
          cas.fillStyle='black';
          cas.arc(0,0,5,0,2*Math.PI);
          cas.fill();
          cas.restore();
      }
      clock();
      let autoPlay=null;
      clearInterval(autoPlay);
      autoPlay=setInterval(()=> {
          clock();
      },1000)


  }

</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值