Canvas荧光表源码分享

[复制链接]
查看6717 | 回复0 | 2018-12-16 01:45:37 | 显示全部楼层 |阅读模式
<

无聊看了一下网页制作从入门到放弃的书,看到一个canvas表盘案例觉得不错,就搞出来美化了一下,就是这个鸟样子
1.jpg.jpg

[HTML] 纯文本查看 复制代码
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>canvas钟表</title>
	<meta name="Keywords" content="canvas钟表">
	<meta name="author" content="Youngxj">
	<style type="text/css">
	body{margin:0;}
</style>
</head>
<body>
	<canvas id="canvas" width=320 height=320 >如果你看到这段文字,说明你的浏览器弱爆了!</canvas>
	<script>
		window.onload=draw;
		function draw() {
			var canvas=document.getElementById('canvas');
			var context=canvas.getContext('2d');
			context.save();
			//改变表盘中心位置
			context.translate(160,160);
			var deg=2*Math.PI/12; 
			context.save(); 
			context.beginPath(); 
			for(var i=0;i<13;i++){
				var x=Math.sin(i*deg);
				var y=-Math.cos(i*deg);
				context.lineTo(x*160,y*160); 
			}
			var c=context.createRadialGradient(0,0,0,0,0,130);
			//改变表盘背景颜色(可渐变)
			c.addColorStop(0,"#000000");
			c.addColorStop(1,"#000000")
			context.fillStyle=c;
			context.fill();
			context.closePath(); 
			context.restore(); 

			context.save();
			context.beginPath();
			for(var i=1;i<13;i++){
				var x1=Math.sin(i*deg);
				var y1=-Math.cos(i*deg);
				context.fillStyle="green";
				context.font="bold 20px Calibri";
				context.textAlign='center';
				context.textBaseline='middle';
				context.fillText(i,x1*120,y1*120); 
			}
			context.closePath(); 
			context.restore(); 

			context.save();
			context.beginPath(); 
			for(var i=0;i<12;i++){
				var x2=Math.sin(i*deg);
				var y2=-Math.cos(i*deg);
				context.moveTo(x2*148,y2*148);
				context.lineTo(x2*135,y2*135); 
			} 
			context.strokeStyle='green';
			context.lineWidth=4;
			context.stroke();
			context.closePath();
			context.restore(); 

			context.save();
			var deg1=2*Math.PI/60;
			context.beginPath(); 
			for(var i=0;i<60;i++){
				var x2=Math.sin(i*deg1);
				var y2=-Math.cos(i*deg1);
				context.moveTo(x2*146,y2*146);
				context.lineTo(x2*140,y2*140); 
			} 
			context.strokeStyle='green';
			context.lineWidth=2;
			context.stroke();
			context.closePath(); 
			context.restore(); 

			context.save();
			// 表盘文字颜色、字体大小等
			context.strokeStyle="green";
			context.font=' 13px sans-serif';
			context.textAlign='center';
			context.textBaseline='middle';
			// 改变表盘中间文字内容
			context.strokeText(getwork(),0,45); 
			context.strokeText(startTime(),0,65);
			context.strokeText(nyr(),0,85); 
			context.restore(); 

			var time=new Date();
			var h=(time.getHours()%12)*2*Math.PI/12;
			var m=time.getMinutes()*2*Math.PI/60;
			var s=time.getSeconds()*2*Math.PI/60;
			context.save();
			context.rotate( h + m/12 + s/720) ;
			context.beginPath();
			context.moveTo(0,6);
			context.lineTo(0,-85);
			context.strokeStyle="green";
			context.lineWidth=6;
			context.stroke();
			context.closePath();
			context.restore();

			context.save();
			context.rotate( m+s/60 ) ;
			context.beginPath();
			context.moveTo(0,8);
			context.lineTo(0,-105);
			context.strokeStyle="green";
			context.lineWidth=4;
			context.stroke();
			context.closePath();
			context.restore();

			context.save();
			context.rotate( s ) ;
			context.beginPath();
			context.moveTo(0,10);
			context.lineTo(0,-120);
			context.strokeStyle="green";
			context.lineWidth=2;
			context.stroke();
			context.closePath();
			context.restore(); 
			context.restore();
			setTimeout(draw, 1000);
		}
		// 当前时间
		function startTime(){
			var today=new Date();
			var h=today.getHours();
			var m=today.getMinutes();
			var s=today.getSeconds();
			m=checkTime(m);
			s=checkTime(s);
			return h+":"+m+":"+s;
			t=setTimeout(function(){startTime()},500);
		}
		function checkTime(i){
			if (i<10){
				i="0" + i;
			}
			return i;
		}
		// 当前星期
		function getwork(){
			var l = ["日","一","二","三","四","五","六"];
			var d = new Date().getDay();
			var str = '星期'+l[d];
			return str;
		}
		// 当前年月日
		function nyr(){
			var myDate = new Date();
			return myDate.toLocaleDateString();

		}
	</script>
</body>
</html>

本版积分规则