用 html5 绘画了一个表

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>钟表</title>
  </head>
  <body>
    <canvas id="dial" style="width:800px; height:800px; margin:auto; position:absolute; z-index:0" width="800" height="800"></canvas>
    <canvas id="pointer" style="width:800px; height:800px; margin:auto; position:absolute; z-index:9" width="800" height="800"></canvas>
    <script type="text/javascript">
      var tagDial = document.getElementById("dial");
      var tagPointer = document.getElementById("pointer");
      var center = { x: tagDial.clientWidth / 2, y: tagDial.clientHeight / 2 };
      var r = 300;
      var num = [12,1,2,3,4,5,6,7,8,9,10,11];

      function drawDial() {
        var context = tagDial.getContext("2d");
        context.translate(center.x,center.y);
        context.lineWidth = 2;
        context.beginPath();
        context.arc(0, 0, r, 0, 2 * Math.PI);
        context.stroke();

        context.beginPath();
        context.arc(0, 0, 8, 0, 2 * Math.PI);
        context.fill();
        context.stroke();

        context.font = "bold 22px Arial";
        context.textAlign = "center";
        context.textBaseline = "midden";
        for (var i = 0; i < 60; i++) {
          var x1 = Math.sin((i * 6 * Math.PI) / 180) * r * (0 == (i * 6) % 30 ? 0.9 : 0.95);
          var y1 = Math.cos((i * 6 * Math.PI) / 180) * r * (0 == (i * 6) % 30 ? 0.9 : 0.95);
          var x2 = Math.sin((i * 6 * Math.PI) / 180) * r;
          var y2 = Math.cos((i * 6 * Math.PI) / 180) * r;

          if (0 == (i * 6) % 30) {
            var x3 = Math.sin((i * 6 * Math.PI) / 180) * r * 0.85;
            var y3 = Math.cos((i * 6 * Math.PI) / 180) * r * 0.85;
            context.fillText(num[(i * 6) / 30], x3 , -y3+7);
          }

          context.beginPath();
          context.moveTo(x1, -y1);
          context.lineTo(x2, -y2);
          context.stroke();
        }
      }

      function drawPointer() {
        
        var context = tagPointer.getContext("2d");
        var date = new Date();
        var h = date.getHours();
        var m = date.getMinutes();
        var s = date.getSeconds();

        h = h > 0 && h < 13 ? h : 0 == h ? 12 : h - 12;
        
        context.clearRect(0, 0, tagPointer.width, tagPointer.height);
        context.beginPath();

        context.strokeStyle = "black";
        context.lineWidth = 10;
        context.moveTo(center.x, center.y);
        
        var x1 = Math.sin((-h * 5 * 6 * Math.PI) / 180) * r * 0.5;
        var y1 = Math.cos((-h * 5 * 6 * Math.PI) / 180) * r * 0.5;
        context.lineTo(center.x-x1, center.y-y1);
        context.stroke();

        context.beginPath();
        context.moveTo(center.x, center.y);
        
        context.lineWidth = 6;
        var x2 = Math.sin((-m * 6 * Math.PI) / 180) * r * 0.75;
        var y2 = Math.cos((-m * 6 * Math.PI) / 180) * r * 0.75;
        context.lineTo(center.x-x2, center.y-y2);
        context.stroke();
        
        context.beginPath();
        context.strokeStyle = "red";
        context.moveTo(center.x, center.y);
        
        context.lineWidth = 2;
        var x3 = Math.sin((-s * 6 * Math.PI) / 180) * r * 0.75;
        var y3 = Math.cos((-s * 6 * Math.PI) / 180) * r * 0.75;
        context.lineTo(center.x-x3, center.y-y3);
        context.stroke();
      }
      drawDial();
      drawPointer();
      setInterval("drawPointer()", 1000);
    </script>
  </body>
</html>

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值