为了账号安全,请及时绑定邮箱和手机立即绑定

canvas时钟

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Canvas时钟</title>

<Script type="text/javaScrpt">


</script>

<style type="text/css">

  div{

 text-align:center;

 margin-top:150px;

 }

 #clock{

 border:1px solid #CCC;

 }

</style>

</head>


<body>

     <div>

         <canvas id="clock" height="200px" width="200px"></canvas>

     </div>

<script type="text/javaScrpt" src="JavaScript/clock.js"></script>

</body>

</html>

不考虑js的代码,这样写对不对。我在浏览器上只显示个框

正在回答

4 回答

var dom = document.getElementById('clock');

var ctx = dom.getContext('2d');

var width = ctx.canvas.width;

var height = ctx.canvas.height;

var r = width/2;


function drawBackground(){    //外圈设置

ctx.translate(r,r);  //重新映射画布上的(0,0)位置

ctx.beginPath(); //起始一条路径,或当前路径

ctx.lineWidth=10;  

ctx.arc(0,0,r-5,2*Math.PI,false);

ctx.stroke();   //绘制已定路线

var hourNumbers = [3,4,5,6,7,8,9,10,11,12,1,2];   //数字显示

ctx.font = '18px Arial';

ctx.textAlign = 'center';

ctx.textBaseline = 'middle';

hourNumbers.forEach(function(number,i){

var rad = 2*Math.PI/12*i;  //每个小时数的弧度乘索引

var x = Math.cos(rad)*(r-30);

var y = Math.sin(rad)*(r-30);

ctx.fillText(number,x,y);

});

for(var i=0;i<60;i++){

var rad = 2*Math.PI/60*i; 

var x = Math.cos(rad)*(r-18);

var y = Math.sin(rad)*(r-18);  //大一点

        ctx.beginPath();

if(i%5===0){   //5个点的时候是黑色

ctx.arc(x,y,2*Math.PI,false);

}else{

ctx.fillStyle = '#ccc';

ctx.arc(x,y,2*Math.PI,false);

}

ctx.fill();

}

}

function drawHour(hour){

ctx.save();

ctx.beginPath();

var rad = 2*Math.PI/12*hour;

var mrad = 2*Math.PI/12/60*minute;

ctx.rotate(rad + mrad);

ctx.lineWidth=6;

ctx.lineCap = 'round';  //时针线末端的样式

ctx.moveTo(0,10);  //时针线的长度

ctx.lineTo(0,-r/2);

ctx.stroke();

}

function drawMinute(minute){

ctx.save();

ctx.beginPath();

var rad = 2*Math.PI/60*minute;

ctx.lineWidth=3;

ctx.lineCap = 'round';  //时针线末端的样式

ctx.moveTo(0,10);  //时针线的长度

ctx.lineTo(0,-r+30);

ctx.stroke();

ctx.restore();  //返回之前保存过的路径

}

function drawSecond(second){

ctx.save();

ctx.beginPath();

ctx.fillStyle = '#c14543';

var rad = 2*Math.PI/60*second;

ctx.lineWidth=3;

    ctx.moveTo(-2,20);  //时针线的长度

ctx.lineTo(2,20);

ctx.lineTo(1,-r+18);

ctx.lineTo(-1,-r+18);

ctx.fill();

ctx.restore();  //返回之前保存过的路径

}

function drawDot(){    //圆点

ctx.beginPath();

ctx.fillStyle = '#fff';

ctx.arc(0,0,3,0,2*Math.PI,flase);

ctx.fill();

}


drawBackground();

drawHour(4,30); //例如4小时的位置

drawMinute(30);

drawSecond(15);

drawDot();


0 回复 有任何疑惑可以回复我~

可是我有设置js,还是不出来


0 回复 有任何疑惑可以回复我~

相当于就是一个元素而已,没有特别的样式

0 回复 有任何疑惑可以回复我~

对的,没设置js只会显示一个画布

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Canvas 绘制时钟
  • 参与学习       49752    人
  • 解答问题       160    个

canvas画出漂亮的时钟,通过本教程能重新掌握一些几何知识

进入课程

canvas时钟

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信