利用canvas画一个钟表(直接复制到编辑器运行即可)

let ctx = document.getElementById('canvas')
		
		if(ctx.getContext){
			let ctx = canvas.getContext('2d')
		
			//8 动起来
			setInterval(()=>{
				time()
			},1000)
			
			
			function time(){
				//1 画一个圆
				ctx.beginPath()
				ctx.arc(250,250,200,0,Math.PI*2)
				ctx.strokeStyle = 'darkorchid'
				ctx.lineWidth = 20
				ctx.stroke()
				ctx.fillStyle = 'white'
				ctx.fill()
				
				//2 画一个内圆
				ctx.beginPath()
				ctx.arc(250,250,20,0,Math.PI*2)
				ctx.fillStyle = 'white'
				ctx.fill()
				ctx.stroke()
				
				
				//3 画时针刻度
				for(var i = 0; i < 12; i++){
					kd(Math.PI/180*30*i,-190,-170,'black',10)
				}
				//4 画分针刻度
				for(var i = 0; i < 60; i++){
					kd(Math.PI/180*6*i,-190,-180,'black',5)
				}
				
				//5 画文字
				let text=[3,4,5,6,7,8,9,10,11,12,1,2]
				for(var i=0; i < 12; i++){
					// 计算文字坐标
					let x = Math.cos(Math.PI/180*30*i)*200*0.7+250;
					let y = Math.sin(Math.PI/180*30*i)*200*0.7+250;
					//设计文字样式
					ctx.font='20px 黑体';
					ctx.fillStyle='black';
					ctx.textAlign='center';
					ctx.textBaseline='middle';
					ctx.fillText(text[i],x,y)
				}
				
				
				//6 画表针
				let time = new Date()
				let h = time.getHours();//24小时制
				let m = time.getMinutes();
				let s = time.getSeconds();
				
				ctx.clearRect(0,0,0,0)
				
				//画时针
				//换算成十二小时制
				h = h>12 ? h-12+m/60 : h+m/60;
				kd(Math.PI/180*30*h,-100,40,'black',5)
				
				//画分针
				kd(Math.PI/180*6*m,-110,30,'red',3)
				
				//画秒针
				kd(Math.PI/180*6*s,-120,20,'green',1)
				
				//7 画一个表❤
				ctx.beginPath()
				ctx.arc(250,250,5,0,Math.PI*2)
				ctx.fill()
				ctx.stroke()
			}

			
			//封装刻度方法
			function kd(rotate,moveTo,lineTo,color,width){
				ctx.save()
				ctx.translate(250,250)
				ctx.rotate(rotate)
				ctx.beginPath()
				ctx.moveTo(0,moveTo);
				ctx.lineTo(0,lineTo);
				ctx.strokeStyle = 'color'
				ctx.lineWidth = width;
				ctx.stroke()
				ctx.restore()
			}		
		}else{
			console.log('浏览器版本过低,请更新浏览器!')
		}

运行结果如下:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值