ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

HTML+js手绘时钟动态效果

2022-03-19 16:34:55  阅读:167  来源: 互联网

标签:restore beginPath lineWidth ctx js 动态效果 HTML PI Math


目录

遇到的问题:

效果:

源码:


遇到的问题:

使用外链将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>

标签:restore,beginPath,lineWidth,ctx,js,动态效果,HTML,PI,Math
来源: https://blog.csdn.net/leaf_leaf__/article/details/123597191

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有