HTML+js手绘时钟动态效果

目录

遇到的问题:

效果:

源码:


遇到的问题:

使用外链将js链入后网页上并不显示js部分的内容,后直接将js部分使用script标签写在html内

效果

截图时间为下午16:25

源码:

<!DOCTYPE html>
<html>
	<head>
		<Meta charset="utf-8">
		<title>4.1手绘时钟</title>
	</head>
	<body>
		<h3>手绘时钟</h3>
		<hr >
		<canvas id="clockCanvas" width="300" height="300" style="border: 1px solid">
			对不起,您的浏览器不支持HTML画布API
		</canvas>
		
		
		<script type="text/javascript">
			var c=document.getElementById('clockCanvas');
			var ctx=c.getContext('2d');
			
			
			//绘制时钟
			function drawClock(){
				ctx.save();
				
				ctx.clearRect(0,0,300,300);
				
				ctx.translate(150,150);
				ctx.rotate(-Math.PI/2);
				ctx.linewidth=6;
				ctx.lineCap='round';
				
				for (var i=0;i<12;i++){
					ctx.beginPath();
					ctx.rotate(Math.PI/6);
					ctx.moveto(100,0);
					ctx.lineto(120,0);
					
					ctx.stroke();
				}
				
				ctx.linewidth=5;
				for (i=0;i<60;i++){
					ctx.beginPath(118,0);
					ctx.moveto(120,0);
					ctx.stroke();
					ctx.rotate(Math.PI/30);
				}
				
				var Now=new Date();
				var s=Now.getSeconds();
				var m=Now.getMinutes();
				var h=Now.getHours();
				if(h>12){
					h-=12;
				}
					
				//绘制时针
				ctx.save();
				ctx.rotate(h*(Math.PI/6)+(Math.PI/360)*m+(Math.PI/21600)*s);
				ctx.linewidth=12;
				ctx.beginPath();
				ctx.moveto(-20,0);
				ctx.lineto(80,0);
				
				ctx.stroke();
				ctx.restore();
				
				//绘制分针
				ctx.save();
				ctx.rotate((Math.PI/30)*m+(Math.PI/1800)*s);
				ctx.linewidth=8;
				ctx.beginPath();
				ctx.moveto(-20,0);
				ctx.lineto(112,0);
				
				ctx.stroke();
				ctx.restore();
				
				//绘制秒针
				ctx.save();ctx.rotate(s*Math.PI/30);
				ctx.strokeStyle='red';
				ctx.linewidth=6;
				ctx.beginPath();
				ctx.moveto(-30,0);
				ctx.lineto(120,0);
				ctx.stroke();
				
				ctx.fillStyle='red';
				ctx.beginPath();
				ctx.arc(0,0,10,0,Math.PI*2,true);
				ctx.fill();
				ctx.restore();
				
				//绘制表盘
				ctx.linewidth=12;
				ctx.strokeStyle='gray';
				ctx.beginPath();
				ctx.arc(0,0,140,0,Math.PI*2,true);
				
				ctx.stroke();
				ctx.restore();
			}
			setInterval('drawClock()',1000);
		</script>
	</body>
</html>

相关文章

vue阻止冒泡事件 阻止点击事件的执行 &lt;div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些