HTML5 Canvas 小例子 旋转的时钟

本文介绍如何利用HTML5的Canvas元素结合JavaScript实现一个动态的时钟效果。该时钟能够实时显示当前时间,并通过不同的线条长度区分小时、分钟和秒针。文章提供了完整的代码示例。
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Canvas</title>
    <script type="text/javascript" src="jQuery.js"></script>
</head>
<style type="text/css">
    body {
        padding: 0;
        margin: 0;
        background: black;
    }
    #canvas {
        background: white;
        margin: 100px 0 0 300px;
    }
    #canvas>span {
        color: white;
        font-size: 14px;
    }
</style>
<body>
    <canvas id="canvas" width="600" height="500">
    <span>您的浏览器不支持</span>
</canvas>
</body>
</html>
<script type="text/javascript">
    /*获取绘制环境*/
    var oc = $('#canvas')[0];
    canvas = oc.getContext('2d');
    /*定义圆心和半径*/
    var x = 250, y = 250, r = 150;

    var time = setInterval(function() {
        ClocksWatche();
    }, 1000);

    function ClocksWatche() {
        /*清理画布*/
        canvas.clearRect(0, 0, oc.width, oc.height);
        /*开始绘制*/
        canvas.beginPath();
        for(var i = 0; i < 60; i++) {
            /*绘制起始点移到圆心*/
            canvas.moveTo(x, y);
            /*根据圆心和半径每6度绘制一次(圆心横坐标,圆心纵坐标,其实弧度,结束弧度,是否逆时针)*/
            canvas.arc(x, y, r, 6 * i * Math.PI / 180, 6 * (i + 1) * Math.PI / 180, false);
        }
        /*连接至起始点*/
        canvas.closePath();
        /*画线*/
        canvas.stroke();
        /*设置线的粗细*/
        canvas.lineWidth = 3;
        /*开始绘制*/
        canvas.beginPath();
        for(var i = 0; i < 60; i++) {
            /*绘制起始点移到圆心*/
            canvas.moveTo(x, y);
            /*根据圆心和半径没30度绘制一次*/
            canvas.arc(x, y, r, 30 * i * Math.PI / 180, 30 * (i + 1) * Math.PI / 180, false);
        }
        /*连接至起始点*/
        canvas.closePath();
        /*画线*/
        canvas.stroke();
        /*设置填充颜色*/
        canvas.fillStyle = 'white';
        canvas.beginPath();
        canvas.moveTo(x, y);
        canvas.arc(x, y, r * 14 / 15, 0, 360, false);
        canvas.closePath();
        canvas.fill();

        var loacalDate = new Date();
        var hours = loacalDate.getHours();
        var minute = loacalDate.getMinutes();
        var sencond = loacalDate.getSeconds();
        hours = (hours * 30 - 90 + minute / 2) * Math.PI / 180;
        minute = (minute * 6 - 90) * Math.PI / 180;
        sencond = (sencond * 6 - 90) * Math.PI / 180;

        canvas.beginPath();
        canvas.lineWidth = 5;
        canvas.moveTo(x, y);
        canvas.arc(x, y, r * 8 / 15, hours, hours, false);
        canvas.stroke();

        canvas.beginPath();
        canvas.lineWidth = 3;
        canvas.moveTo(x, y);
        canvas.arc(x, y, r * 10 / 15, minute, minute, false);
        canvas.stroke();

        canvas.beginPath();
        canvas.lineWidth = 1;
        canvas.moveTo(x, y);
        canvas.arc(x, y, r * 14 / 15, sencond, sencond, false);
        canvas.stroke();
    }
</script>

 

转载于:https://www.cnblogs.com/lovling/p/6440701.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值