Canvas荧光表源码分享
无聊看了一下网页制作从入门到放弃的书,看到一个canvas表盘案例觉得不错,就搞出来美化了一下,就是这个鸟样子
<!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;
return str;
}
// 当前年月日
function nyr(){
var myDate = new Date();
return myDate.toLocaleDateString();
}
</script>
</body>
</html>
页:
[1]