js Canvas绘制圆形时钟教程

本文实例为大家分享了Canvas绘制圆形时钟的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title>canvas-clock</title>
</head>
<body>
  <canvas id="canvas" width="500px" height="500px">
    你的浏览器不支持该元素!赶紧下载最新版本浏览器或使用其他浏览器!
  </canvas>
  <script>
    //获取到canvas元素
    var canvas = document.getElementById('canvas');
    //获取canvas中的画图环境
    var context = canvas.getContext('2d'); 

    //时钟的大小
    function drowClock(){
      //钟表的大小:初始值设置
      var clockDimensions = 150; 

      //清理当前画布,以便后期绘制
      context.clearRect(0,0,canvas.width,canvas.height);
      //绘制表盘
      context.beginPath(); //开启新路径
      context.lineWidth = clockDimensions/15;
      context.strokeStyle = "#A7C0DC";
      //绘制表盘圆圈
      context.arc(canvas.width/2,canvas.height/2,clockDimensions,0,Math.PI*2,false);
      context.stroke();//描边绘制 

      //绘制表盘的刻度线
      for(var i=1;i<=60;i++){
        if(i%5==0){
          context.save();//保存当前绘制环境
          context.beginPath();
          context.lineWidth =clockDimensions/30;
          context.strokeStyle = "#9AABB1";
          //重置坐标原点(0,0)
          context.translate(canvas.width/2,canvas.height/2);
          //绘制环境旋转方法,以(0,0)为参考点进行旋转
          context.rotate(Math.PI*2/60 * i);
          context.moveTo(0,clockDimensions-clockDimensions/30);
          context.lineTo(0,clockDimensions-clockDimensions/8);
          context.stroke();
          context.beginPath();
          context.textAlign = 'center';
          context.textBaseline = 'middle';
          context.font = 'bold '+Math.floor(clockDimensions/10)+'px 宋体';
          context.fillStyle = "#03671F";
          context.fillText(i/5,0,0-(clockDimensions-clockDimensions/5));
          context.fill();
          context.restore();//恢复当前保存的绘制环境
        }else {
          context.save();
          context.beginPath();
          context.lineWidth = Math.floor(clockDimensions/100);
          context.strokeStyle = "#8EA5AB";
          //重置坐标原点(0,0)
          context.translate(canvas.width / 2, canvas.height / 2);
          //绘制环境旋转方法,以(0,0)为参考点进行旋转
          context.rotate(Math.PI * 2 / 60 * i);
          context.moveTo(0, clockDimensions-clockDimensions/20);
          context.lineTo(0, clockDimensions-clockDimensions/10);
          context.stroke();
          context.restore();
        }
      } 

      //获取当前windows的时间
      var now = new Date();
      var sec = now.getSeconds();
      var min = now.getMinutes();
      var hour = now.getHours(); 

      //获取精准的小时数
      hour = hour +min/60 + sec/3600;
      //转换为12进制
      hour = hour>12?(hour-12):hour;
      //获取精准的分钟数
      min = min + sec/60; 

      //绘制时针
      context.save();
      context.beginPath();
      context.lineWidth = clockDimensions/30;
      context.strokeStyle = "#596C74";
      //重置坐标原点(0,0)
      context.translate(canvas.width / 2, canvas.height / 2);
      //绘制环境旋转方法,以(0,0)为参考点进行旋转
      context.rotate(Math.PI * 2 / 12 * hour);
      context.moveTo(0, clockDimensions/10);
      context.lineTo(0, 0-clockDimensions/2);
      context.stroke();
      context.restore(); 

      //绘制分针
      context.save();
      context.beginPath();
      context.lineWidth = clockDimensions/40;
      context.strokeStyle = "#596C74";
      //重置坐标原点(0,0)
      context.translate(canvas.width / 2, canvas.height / 2);
      //绘制环境旋转方法,以(0,0)为参考点进行旋转
      context.rotate(Math.PI * 2 / 60 * min);
      context.moveTo(0, clockDimensions/8);
      context.lineTo(0, 0-(clockDimensions-clockDimensions/5));
      context.stroke();
      context.restore(); 

      //绘制秒针
      context.save();
      //重置坐标原点(0,0)
      context.translate(canvas.width / 2, canvas.height / 2);
      context.beginPath();
      context.lineWidth = clockDimensions/50;
      context.strokeStyle = "#738B93";
      //绘制环境旋转方法,以(0,0)为参考点进行旋转
      context.rotate(Math.PI * 2 / 60 * sec);
      context.moveTo(0, clockDimensions/6);
      context.lineTo(0, 0-(clockDimensions-clockDimensions/10));
      context.stroke();
      //修饰秒针
      context.beginPath();
      context.arc(0,0-(clockDimensions-clockDimensions/3),clockDimensions/20,0,Math.PI*2,true);
      context.fillStyle = "#2FFC14";
      context.fill();
      context.lineWidth = clockDimensions/50;
      context.stroke();
      //修饰圆心
      context.beginPath();
      context.fillStyle = "#738B93";
      context.arc(0,0,clockDimensions/20,0,Math.PI*2,true);
      context.fill();
      context.restore();
    }
    drowClock();
    setInterval(drowClock,1000); 

  </script>
</body>
</html> 

效果图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • js Canvas实现圆形时钟教程

    阅读本文需要一点关于canvas基本用法的基础,本文实例为大家分享了HTML5 Canvas实现圆形时钟简易教程 第一步:新建一个最简单的html文件,并且在<body>标签中定义元素canvas. canvas.html <html> <head> <title>Canvas clock tutorial</title> </head> <body> <canvas id="clock" wid

  • JavaScript Canvas绘制圆形时钟效果

    本文实例为大家分享了Canvas时钟效果展示的具体代码,供大家参考,具体内容如下 <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style> canvas{ display: block; margin: 0 auto; background-color: #fdffad; border: 1px solid #0

  • JavaScript学习小结之使用canvas画“哆啦A梦”时钟

    前言:今天看完了Js书的canvas画布那张,好开心~又是心爱的canvas~欧耶~ 之前看到有人建议我画蓝胖子,对哦,我怎么把童年最喜欢的蓝胖子忘了,为了表达我对蓝胖子的歉意,所以今天画了会动的hello world,也算是一种进步咯~ 好的各位,请上车的乘客往里走,请不要堵塞通道,谢谢.我们开车吧~ 正文: 今天先上图吧,看看效果再说 今天的蓝胖子长这样,看到它还是这么胖,我就放心了.这世界还是充满正能量的,总归还有人比我胖,哈哈哈 然后是上代码 html部分 <canvas id="

  • 最丑的时钟效果!js canvas时钟制作方法

    今日就发个丑丑的时钟,老实说 有没有什么调试canvas的工具,老是要在浏览器刷新查看效果,好累啊~  (┬_┬) 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> body{ background: #eee; } canvas{ ba

  • JS+Canvas绘制时钟效果

    本文实例为大家分享了使用canvas绘制时钟的具体代码,供大家参考,具体内容如下 1. clock.html    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Description" content=""> <title>canvas时钟</t

  • JavaScript html5 canvas绘制时钟效果(二)

    对于H5来说,canvas可以说是它最有特色的一个地方了,有了它之后我们可以随意的在网页上画各种各样的图形,做一些小游戏啊什么的.canvas这个标签的用法,在网上也有特别多的教程了,这里就不作介绍了.今天我们就用canvas来做一个小小的时钟.完整的代码在这里https://github.com/wwervin72/HTML5-Clock. 那么首先在这个页面里面我使用了两个canvas,一个用来绘制静态的时钟表盘和刻度,另一个用来绘制时钟的三个指针,然后用定位让他们重合到一起.然后这里没什么

  • js Canvas绘制圆形时钟效果

    本文实例为大家分享了js Canvas圆形时钟的具体实现代码,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Canvas Clock</title> <style type="text/css"> div{ text-align: center; margin-top: 250px

  • js+html5实现canvas绘制网页时钟的方法

    本文实例讲述了js+html5实现canvas绘制网页时钟的方法,画的是一个可用于网页的.带摆的钟表,可以通过按钮调整其大小和位置,具体实现内容如下 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Clock</title> <script type="tex

  • js Canvas实现的日历时钟案例分享

    Html: <!doctype html> <html> <head> <meta charset="UTF-8"> <title>Document</title> <script src="requestNextAnimationFrame.js"></script> <script src="calendarWithTime.js">&

  • JavaScript html5 canvas绘制时钟效果

    本文实例讲述了JavaScript+html5 canvas绘制时钟效果.分享给大家供大家参考,具体如下: HTML部分: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0

随机推荐