經常在網頁上看到轉動的時鍾,待機頁面最常見,心血來潮自己利用Html5的canvas並調用了大量的js代碼做了一個時鍾,可以在需要的地方使用到。雖然不是很酷炫,但是大體的功能已經達到了。后期希望能夠再加以改造改造,
廢話不多說,直接上干貨。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style>
</style>
</head>
<body>
<canvas id="colock" width="200" height="200" >
</canvas>
</body>
</html>
<script type="text/javascript">
function displayTime(){
//獲取當前時間
var now=new Date();
//獲取時分秒
var h=now.getHours();
var m=now.getMinutes();
var s=now.getSeconds();
var c=document.getElementById("colock");
var cxt=c.getContext("2d");
cxt.clearRect(0,0,200,200);
//畫表盤
cxt.beginPath();
cxt.arc(100,100,95,0,2*Math.PI);
cxt.lineWidth="10";
cxt.fillStyle="#e4e6e5";
cxt.fill();
cxt.strokeStyle="#48bd4d";
cxt.stroke();
cxt.closePath();
//畫表心
cxt.beginPath();
cxt.arc(100,100,3,0,2*Math.PI);
cxt.fillStyle="red";
cxt.fill();
cxt.closePath();
//時刻度
for(var i=0;i<12;i++){
cxt.save();
cxt.translate(100,100);
cxt.rotate(30*i*Math.PI/180);
cxt.save();
cxt.lineWidth="3";
cxt.strokeStyle="black";
cxt.stroke();
cxt.beginPath();
cxt.moveTo(0,-90);
cxt.lineTo(0,-80);
cxt.closePath();
cxt.restore();
cxt.translate(0,-75);
cxt.rotate(-30*i*Math.PI/180);
//設置字體樣式
cxt.font = "15px Courier ";
//設置字體填充顏色
cxt.fillStyle ="black";
//從坐標點(50,50)開始繪制文字
if(i==0)
{
cxt.fillText(12, -6, 4);
}
else{
cxt.fillText(i, -6, 4);
}
cxt.restore();
}
//畫分刻度
for(var j=0;j<60;j++){
cxt.save();
cxt.translate(100,100);
cxt.rotate(6*j*Math.PI/180);
cxt.lineWidth="1";
cxt.beginPath();
cxt.strokeStyle="black";
cxt.moveTo(0,-90);
cxt.lineTo(0,-85);
cxt.closePath();
cxt.stroke();
cxt.restore();
}
//指針(秒針最長最細,時針最短最粗)
//先根據當前的時間確定秒針的位置
cxt.save();
cxt.translate(100,100);
cxt.rotate(6*s*Math.PI/180);
cxt.lineWidth="1";
cxt.beginPath();
cxt.moveTo(0,-80);
cxt.lineTo(0,-3);
cxt.strokeStyle="red";
cxt.closePath();
cxt.stroke();
cxt.restore();
//確定分針的位置,分針一秒鍾走0.1°
cxt.save();
cxt.translate(100,100);
cxt.rotate(6*m*Math.PI/180);
cxt.rotate(0.1*s*Math.PI/180);
cxt.lineWidth="2";
cxt.beginPath();
cxt.moveTo(0,-65);
cxt.lineTo(0,-3);
cxt.strokeStyle="black";
cxt.closePath();
cxt.stroke();
cxt.restore();
//確定時針的位置,時針一分鍾走0.5°,時針一秒走1/120°
cxt.save();
cxt.translate(100,100);
cxt.rotate(30*h*Math.PI/180);
cxt.rotate(0.5*m*Math.PI/180);
cxt.rotate((1/120)*m*Math.PI/180);
cxt.lineWidth="4";
cxt.beginPath();
cxt.moveTo(0,-45);
cxt.lineTo(0,-3);
cxt.strokeStyle="black";
cxt.closePath();
cxt.stroke();
cxt.restore();
setTimeout(displayTime,1000) /*每過一秒執行一次displayTime*/
}
window.onload = displayTime;
</script>
感興趣的可以試一試哦
