当前位置: 代码迷 >> HTML/CSS >> html5+js钟表效果
  详细解决方案

html5+js钟表效果

热度:489   发布时间:2014-01-03 00:30:09.0
html5+js时钟效果
<!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>html5时钟</title>   
    </head>
    <body>
    <canvas id="clock" width="500" height="500" style="background-color:black;">你的浏览器不支持canvas</canvas>
    <script type="text/javascript">
    var canvas = document.getElementById("clock");
    var cxt = canvas.getContext("2d");
    function drawClock() {
    var now = new Date();
    var sec = now.getSeconds();
    var min = now.getMinutes();
    var hour = now.getHours();
    hour > 12 ? hour - 12 : hour;
    hour += (min / 60);
    //先清空画布
    cxt.clearRect(0, 0, canvas.width, canvas.height);
    //美女图片作为表盘背景    
    var img = new Image();
    img.src = "http://t-1.tuzhan.com/ebd0af03090a/p-2/l/2013/11/30/17/515a5c953dc94172bc2c96953cf6a8e2.jpg";
    cxt.drawImage(img, 0, 0);
    cxt.strokeStyle = "#00FFFF";
    cxt.lineWidth = 10;
    cxt.beginPath();
    cxt.arc(250, 250, 200, 0, 360);
    cxt.stroke();
    cxt.closePath();
    //时刻度
    for (var i = 0; i < 12; i++) {
    cxt.save();//保存当前状态
    cxt.lineWidth = 7;
    cxt.strokeStyle = "#FFFF00";
    //设置原点
    cxt.translate(250, 250);
    //设置旋转角度
    cxt.rotate(30 * i * Math.PI / 180);//弧度   角度*Math.PI/180
    cxt.beginPath();
    cxt.moveTo(0, -175);
    cxt.lineTo(0, -195);
    cxt.stroke();
    cxt.closePath();
    cxt.restore();//把原来状态恢复回来
    }
    //分刻度
    for (var i = 0; i < 60; i++) {
    cxt.save();
    cxt.lineWidth = 5;
    cxt.strokeStyle = "#FFFF00";
    cxt.translate(250, 250);
    cxt.rotate(i * 6 * Math.PI / 180);
    cxt.beginPath();
    cxt.moveTo(0, -185);
    cxt.lineTo(0, -195);
    cxt.stroke();
    cxt.closePath();
    cxt.restore();
    }
    cxt.save();
    cxt.lineWidth = 7;
    cxt.strokeStyle = "#00FFFF";
    cxt.translate(250, 250);
    cxt.rotate(hour * 30 * Math.PI / 180);//每小时旋转30度
    cxt.beginPath();
    cxt.moveTo(0, -130);
    cxt.lineTo(0, 10);
    cxt.stroke();
    cxt.closePath();
    cxt.restore();
    cxt.save();
    cxt.lineWidth = 5;
    cxt.strokeStyle = "#FFFF00";
    cxt.translate(250, 250);
    cxt.rotate(min * 6 * Math.PI / 180);//每分钟旋转6度
    cxt.beginPath();
    cxt.moveTo(0, -150);
    cxt.lineTo(0, 10);
    cxt.stroke();
    cxt.closePath();
    cxt.restore();
    cxt.save();
    cxt.lineWidth = 3;
    cxt.strokeStyle = "#FF0000";
    cxt.translate(250, 250);
    cxt.rotate(sec * 6 * Math.PI / 180);//每秒旋转6度
    cxt.beginPath();
    cxt.moveTo(0, -170);
    cxt.lineTo(0, 10);
    cxt.stroke();
    cxt.closePath();
    //美化表盘,画中间的小圆
    cxt.beginPath();
    cxt.arc(0, 0, 7, 0, 360);
    cxt.fillStyle = "#FFFF00";
    cxt.fill();
    cxt.strokeStyle = "#FF0000";
    cxt.stroke();
    cxt.closePath();
    //秒针上的小圆
    cxt.beginPath();
    cxt.arc(0, -140, 7, 0, 360);
    cxt.fillStyle = "#FFFF00";
    cxt.fill();
    cxt.stroke();
    cxt.closePath();
    cxt.restore();
    //显示时间
    cxt.font = "18px 微软雅黑";
    cxt.lineWidth = 2;
    cxt.fillStyle = "#0000FF";
    hour=now.getHours();
    var str = hour > 10 ? hour : ("0" + hour) + ":" + (min > 10 ? min : ("0" + min))
    cxt.fillText(str, 225, 380);
    //中国制造
    cxt.font = "12px 宋体";
    cxt.lineWidth = 1;
    cxt.fillText("Made In China", 210, 400);
    }
    drawClock();
    setInterval(drawClock, 1000);
    </script>
    </body>
    </html>