html画布实现一个时钟应用

</pre><pre name="code" class="javascript">//核心js逻辑
<script type="text/javascript">
	var canvas=document.getElementById("canvas");
	var cobj=canvas.getContext("2d");
	var originx=250;
	var originy=250;
    var radius=200;
    // 添加阴影

    setInterval(watch, 1000)
    
    function watch(){
    	cobj.clearRect(0, 0, 500, 500);
	    cobj.shadowColor="#888";
	    cobj.shadowOffsetX=3;
	    cobj.shadowOffsetY=3;
	    cobj.shadowBlur=5;
	    // 添加渐变色
	    var objColor=cobj.createRadialGradient(originx, originy, 1, originx, originy, 200);
	    objColor.addColorStop(0, "#efefef");
	    objColor.addColorStop(1, "#cecece");
	    cobj.fillStyle=objColor;

		cobj.beginPath();
		cobj.arc(originx, originy, radius,0,2*Math.PI);
		cobj.stroke();
		cobj.fill();    	
	    var date=new Date();
	    var ha=date.getHours()*30+date.getMinutes()*6/12-90;
	    var ma=date.getMinutes()*6-90;
	    var sa=date.getSeconds()*6-90;
	    drawPointer(80,ha);
	    drawPointer(100,ma);
	    drawPointer(120,sa);
		drawMark();
		drawBMark();	    
    }
    // 小刻度
	function drawMark(){
		for (var i = 0; i < 60; i++) {
			cobj.beginPath();
			cobj.moveTo(originx+radius*Math.cos(i*6*Math.PI/180), originy+radius*Math.sin(i*6*Math.PI/180));
			cobj.lineTo(originx+(radius-10)*Math.cos(i*6*Math.PI/180), originy+(radius-10)*Math.sin(i*6*Math.PI/180));
			cobj.stroke();
		};
	}
	// 大刻度
	function drawBMark(){
		for (var i = 0; i < 12; i++) {
			cobj.beginPath();
			cobj.lineWidth=3;
			cobj.moveTo(originx+radius*Math.cos(i*30*Math.PI/180), originy+radius*Math.sin(i*30*Math.PI/180));
			cobj.lineTo(originx+(radius-16)*Math.cos(i*30*Math.PI/180), originy+(radius-16)*Math.sin(i*30*Math.PI/180));
			cobj.stroke();
		};
	}

	//画针
	function drawPointer(radius,angle){
		cobj.beginPath();
		cobj.moveTo(originx, originy);
		cobj.lineTo(originx+radius*Math.cos(angle*Math.PI/180), originy+radius*Math.sin(angle*Math.PI/180));
		cobj.stroke();
	}	
</script>





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值