飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2707|回复: 2

canvas荧光表源码分享

[复制链接]
  • TA的每日心情

    2019-3-8 17:01
  • 签到天数: 25 天

    [LV.4]偶尔看看III

    发表于 2018-9-1 11:41:56 | 显示全部楼层 |阅读模式
    无聊看了一下网页制作从入门到放弃的书,看到一个canvas表盘案例觉得不错,就搞出来美化了一下,就是这个鸟样子

    [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>

    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    昨天 20:22
  • 签到天数: 441 天

    [LV.9]以坛为家II

    发表于 2023-1-7 23:54:45 | 显示全部楼层
    谢谢楼主的分享
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表