微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐