html5 canvas绘画时钟

本示例使用HTML5的canvas标签和Javascript脚本,模拟显示了一个时钟, 请使用支持HTML5的浏览器预览效果:

HTML部分:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0">
    <title>canvas绘图</title>
</head>
<body onload="init()">
<canvas id="canvas" width="200px" height="200px"></canvas>
</body>
</html>

JavaScript部分:

function init(){
    var canvas = document.getElementById("canvas"),
        context = canvas.getContext("2d");

    setInterval(function(){draw(canvas, context)},1000);
}
function draw(canvas, context){
    var x = canvas.width,
        y = canvas.height,
        r = Math.min(x/2, y/2);

    context.clearRect(0, 0, x, y); //清除绘画历史
    //绘画钟框
    context.fillStyle = "#f1f1f1";
    drawCircle(context, x, y, r);
    //绘画文字
    var tx = x/2,ty = y/2,tr = 0.8*r;
    context.font = "bold 12px 微软雅黑";
    context.fillStyle = "#000";
    drawText(context, "1", tx + 0.5*tr,ty - 0.866*tr);
    drawText(context, "2", tx + 0.866*tr, ty - 0.5*tr);
    drawText(context, "3", tx + tr, ty);
    drawText(context, "4", tx + 0.866*tr, ty + 0.5*tr);
    drawText(context, "5", tx + 0.5*tr, ty + 0.866*tr);
    drawText(context, "6", tx, ty + tr);
    drawText(context, "7", tx - 0.5*tr, ty + 0.866*tr);
    drawText(context, "8", tx - 0.866*tr, ty + 0.5*tr);
    drawText(context, "9", tx - tr, ty);
    drawText(context, "10", tx - 0.866*tr, ty - 0.5*tr);
    drawText(context, "11", tx - 0.5*tr, ty - 0.866*tr);
    drawText(context, "12", tx, ty - tr);
    //获取当前时间
    var date = new Date(),
        h = date.getHours(),
        m = date.getMinutes(),
        s = date.getSeconds(),
        angleH = (360/12)*Math.PI/180,
        angleM = (360/60)*Math.PI/180
    context.strokeSyle = "#000";
     //绘制时刻度
     drawScale(context, x, y, r, angleH, -0.88*r, -0.96*r, 3);
     //绘制分刻度
     drawScale(context, x, y, r, angleM, -0.93*r, -0.96*r, 1);
    //绘画时分秒针
    drawCircle(context, x, y, 3);
    drawNeedle(context, x, y, r, h*angleH + m*angleM/12, -0.5*r);
    drawNeedle(context, x, y, r, m*angleM + s*angleM/60, -0.6*r);
    drawNeedle(context, x, y, r, s*angleM, -0.75*r);

}
//绘画圆
function drawCircle(context, x, y, r){
    context.save();
    context.beginPath();
    context.arc(x/2, y/2, r, 0, Math.PI*2, 0);
    context.fill();
    context.closePath();
    context.restore();
}
//绘画文字方法
function drawText(context, text, x, y){
    context.save();
    x -= (context.measureText(text).width/2);
    y += 4;
    context.translate(x, y);
    context.fillText(text, 0, 0);
    context.restore();
}
//绘制刻度方法
function drawScale(context, x, y, r, rotate, start, end, lineWidth){
    context.save();
    context.beginPath();
    context.translate(x/2,y/2);
    context.lineWidth = lineWidth;
    for (var i = 0; i < 60; i++) {
        context.rotate(rotate);
        context.moveTo(0, start);
        context.lineTo(0, end);
    }
    context.closePath();
    context.stroke();
    context.restore();
}
//绘画时分秒针方法
function drawNeedle(context, x, y, r, rotate, line){
    context.save();
    context.translate(x/2,y/2);
    context.beginPath();
    context.rotate(rotate);
    context.moveTo(0, 0.1*r);
    context.lineTo(0, line);
    context.closePath();
    context.stroke();
    context.restore();
}
时间: 2024-10-17 12:41:24

html5 canvas绘画时钟的相关文章

HTML5 Canvas爱心时钟代码

这是一款数字时钟动画,数字又多个小爱心组成,又何问起整理,随着时间推进,每一秒钟新数字替换旧数字,旧数字离去使用天女散花动画,花是五颜六色的. 查看效果:http://hovertree.com/texiao/html5/48/ 推荐其他时钟:http://hovertree.com/h/bjaf/o0yqj1ly.htmhttp://hovertree.com/h/bjaf/hoverclock.htm 代码如下: <!DOCTYPE html> <html> <head&

HTML5 Canvas 绘制时钟

网上会看到很多绘制的时钟,看代码也是云里雾里,自学了下Canvas,觉得不难,就自己做了一个. 先看一下截图: 比较简陋,但是该有的都有了,样式只加了个阴影. html代码就不贴了,就一个canvas. <canvas id="clock" width="300" height="300"></canvas> 下面是JS实现: 1.取得上下文: var clock = document.getElementById('cl

canvas绘画时钟及倒计时时钟

因为偶是一个前端小白,所以呢!!!!想要把自己在网上看的代码,并且自己敲了一遍,做了注释分享给大家~~~不喜勿喷,谢谢哟!我是super喵二(程序媛),大家一起成长!!! 倒计时时钟(先放效果图)(好吧我这里不是倒计时,是普通时钟,不过一会放上代码里不仅有倒计时也有时间,自行发现): 大概思路:1.0-9的数字以及冒号绘制,定义一个二维数组,每一个数字对应一个数组,1代表画圆,0不画. digit = [ [ [0,0,1,1,1,0,0], [0,1,1,0,1,1,0], [1,1,0,0,

html5 canvas简易时钟

<canvas id='clock' width=500 height=500> 您的浏览器需要升级 </canvas> <script type="text/javascript" charset="utf-8"> var clock=document.getElementById("clock"); var cxt=clock.getContext('2d'); function drawClock ()

html5 canvas 画时钟

<!DOCTYPE HTML> <html> <body> <canvas id="myCanvas" width="400" height="400" style="border:1px solid"></canvas> <script type="text/javascript">     // get the canvas    

html5学习(一)--canvas画时钟

利用空余时间学习一下html5. 1 <!doctype html> 2 <html> 3 <head></head> 4 <body> 5 <canvas id="clock" width="500" height="500"></canvas> 6 <script> 7 var clock=document.getElementById('cloc

HTML5 Canvas绘制实时时钟

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>try to draw the colock</title> <script src="js/modernizr-1.7.js"></script> <script type="text/javascript"> wind

html5 Canvas绘制图形入门详解

html5,这个应该就不需要多作介绍了,只要是开发人员应该都不会陌生.html5是「新兴」的网页技术标准,目前,除IE8及其以下版本的IE浏览器之外,几乎所有主流浏览器(FireFox.Chrome.Opera.Safari.IE9+)都已经开始支持html5了.除此之外,在移动浏览器市场上,众多的移动浏览器也纷纷展开关于「html5的支持能力以及性能表现」的军备竞赛.html作为革命性的网页技术标准,再加上众多浏览器厂商或组织的鼎力支持,可以想见,html5将会成为未来网页技术的领头羊. ht

使用HTML5 -Canvas追踪用户,Chrome隐身模式阵亡

中国的一些精准营销公司又要偷着乐了= =从之前追踪Cookie到后面追踪FlashCookie,某些商家总在永无止境的追踪用户行为甚至是隐私,将其转化为所谓的“商业价值”.我们被迫面临“世风日下.道德沦亡”之窘境,不过笔者后来又释怀了,反正在中国上网本来就没有隐私嘛.毕竟国家机器还在合法工作呢...... 话说回来,HTML5-Canvas追踪用户的核心原理其实就是一句话:在绘制canvas图片时,同样的canvas绘制代码,不同机器和浏览器绘制的图片特征是相同并且独一无二的,这样以来,提取最简