(难度:13%)js里面的canvas实现时钟

时钟会一直保持与当前时间同步

ie8或以下的浏览器不支持canvas

因为代码比较短, 所以脚本, html和css混在一起写了,希望大家不要介意...

<!DOCTYPE html>
<html>
<head>
<title>Canvas element size: 600 x 300, Canvas drawing surface size: 600 x 300</title>
<style>
  body{
    margin: 20px auto;
    width: 960px;
    background: black;
    text-align: center;
  }

</style>
</head>
<body>
  <canvas id='canvas' width="500px" height="500px">
    canvas not support
  </canvas>
</body>
<script>
var canvas=document.getElementById("canvas");
var context=canvas.getContext('2d');
var radius=canvas.width/2-20;
var headRadius=7;
var cenx=canvas.width/2;
var ceny=canvas.height/2;
var hlen=radius-115;
var mlen=radius-75;
var slen=radius-25;
var color=['red','#f0cccc','orange','#0cf','#99ff00'];
function drawHMS(angle,len,color){
  context.beginPath();
  context.moveTo(cenx,ceny);
  x=len*Math.cos(angle)+cenx;
  y=len*Math.sin(angle)+ceny;
  context.lineTo(x,y)
  context.stroke();
  //画针头的图案
  x=(len+headRadius)*Math.cos(angle)+cenx;
  y=(len+headRadius)*Math.sin(angle)+ceny;
  context.beginPath();
  context.moveTo(x,y);
  context.fillStyle=color;
  context.arc(x,y,headRadius,0,Math.PI*2,true);
  context.fill();
}
function draw(){
  var i,x,y;
  var angle;
  //画圆
  context.beginPath();
  context.fillStyle="white";
  context.fillRect(0,0,canvas.width,canvas.height);
  context.arc(cenx,ceny,radius,0,Math.PI*2,true);
  //必须调用下面这句才有效果
  context.stroke();

  //画中心点
  //下面这句必须,不然arc设定的半径必须比之前的大
  context.beginPath();
  context.fillStyle="#FFFF00";
  context.arc(canvas.width/2,canvas.height/2,20,0,Math.PI*2,true);
  context.fill();

  //画数字
  context.fillStyle="black";
  context.font='30px asdas'
  for (i=1;i<=12;i++){
    context.beginPath();
    var _color=color[i%(color.length)];
    context.fillStyle=_color;
    x=(radius-30)*Math.cos(Math.PI/6*i+Math.PI*1.5);
    y=(radius-30)*Math.sin(Math.PI/6*i+Math.PI*1.5);
    context.fillText(i,x+cenx-8,y+ceny+10);
  }
  /
  for (i=1;i<=60;i++){
    context.beginPath();
    var _len=5;
    if (i%5==0) _len=15; 
    x=(radius-_len)*Math.cos(Math.PI/30*i+Math.PI*1.5)+cenx;
    y=(radius-_len)*Math.sin(Math.PI/30*i+Math.PI*1.5)+ceny;
    context.moveTo(x,y);
    var xx=radius*Math.cos(Math.PI/30*i+Math.PI*1.5)+cenx;
    var yy=radius*Math.sin(Math.PI/30*i+Math.PI*1.5)+ceny;
    context.lineTo(xx,yy);
    context.stroke();
  }

  var date=new Date();
  var sec=date.getSeconds();
  var min=date.getMinutes();
  var hour=date.getHours();  if (hour>=12) hour-=12;

  //秒针
  angle=Math.PI/30*sec-Math.PI/2;
  drawHMS(angle,slen,"orange");
  //分针
  angle=Math.PI/30*min+Math.PI/1800*sec-Math.PI/2;
  drawHMS(angle,mlen,"#0cf");
  //时针
  angle=Math.PI/6*hour+Math.PI/360*min-Math.PI/2;
  drawHMS(angle,hlen,"#99ff00");

}
setInterval(draw,1000);
</script>
</html>

运行效果:


更多实际运行的动态效果请参考:在线演示

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.m或d论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值