zoukankan      html  css  js  c++  java
  • 使用HTML5中的Canves标签制作时钟特效

    <!DOCTYPE html >
    <html>
    <head>
    </head>
    <body>
        <canvas id="clock" width=" 500" height=" 500">
    您的浏览器暂时不支持canvas标签,无法看到时钟!
    </canvas>
        <script type="text/javascript">
            var clock = document.getElementById("clock");
            var cxt = clock.getContext('2d');
    
            function drawClock() {
                cxt.clearRect(0, 0, 500, 500);
                var now = new Date();
                var sec = now.getSeconds();
                var mi = now.getMinutes();
                var hour = now.getHours();
                hour = hour > 12 ? hour - 12 : hour;
                hour = hour + mi / 60;
    
                //画表盘
                cxt.lineWidth = 13;
                cxt.strokeStyle = "blue";
                cxt.beginPath();
                cxt.arc(250, 250, 200, 0, 360, false);
                cxt.closePath();
                cxt.stroke();
                //刻度
                //时刻度
                for (var i = 0; i < 12; i++) {
                    cxt.save();
                    //设置时针刻度的粗细
                    cxt.lineWidth = 7;
                    //设置时针刻度的颜色
                    cxt.strokeStyle = "#000";
                    //先设置0,0点
                    cxt.translate(250, 250);
                    cxt.rotate(i * 30 * Math.PI / 180); //角度*Math/180=弧度
                    cxt.beginPath();
                    cxt.moveTo(0, -170);
                    cxt.lineTo(0, -190);
                    cxt.closePath();
                    cxt.stroke();
                    cxt.restore();
                }
                //秒刻度
                for (var i = 0; i < 60; i++) {
                    cxt.save();
                    cxt.lineWidth = 3;
                    cxt.strokeStyle = "#000";
                    cxt.translate(250, 250);
                    cxt.rotate(i * 6 * Math.PI / 180);
                    cxt.beginPath();
                    cxt.moveTo(0, -180);
                    cxt.lineTo(0, -190);
                    cxt.closePath();
                    cxt.stroke();
                    cxt.restore();
                }
                //时针
                cxt.save();
                cxt.lineWidth = 7;
                cxt.strokeStyle = "#000";
                cxt.translate(250, 250);
                cxt.rotate(hour * 30 * Math.PI / 180);
                cxt.beginPath();
                cxt.moveTo(0, -140);
                cxt.lineTo(0, 10);
                cxt.closePath();
                cxt.stroke();
                cxt.restore();
    
                //分针
                cxt.save();
                cxt.lineWidth = 5;
                cxt.strokeStyle = "#000";
                cxt.translate(250, 250);
                cxt.rotate(mi * 6 * Math.PI / 180);
                cxt.beginPath();
                cxt.moveTo(0, -160);
                cxt.lineTo(0, 15);
                cxt.closePath();
                cxt.stroke();
                cxt.restore();
    
                //秒针
                cxt.save();
                cxt.lineWidth = 3;
                cxt.strokeStyle = "red";
                cxt.translate(250, 250);
                cxt.rotate(sec * 6 * Math.PI / 180);
                cxt.beginPath();
                cxt.moveTo(0, -170);
                cxt.lineTo(0, 20);
                cxt.closePath();
                cxt.stroke();
    
                //画出时针,分针,秒针的交叉点
                cxt.beginPath();
                cxt.arc(0, 0, 5, 0, 360, false);
                cxt.closePath();
                cxt.fillStyle = "gray";
                cxt.fill();
                cxt.stroke();
                //画出时针,分针,秒针的交叉点
                cxt.beginPath();
                cxt.arc(0, -140, 3, 0, 360, false);
                cxt.closePath();
                cxt.fillStyle = "gray";
                cxt.fill();
                cxt.stroke();
                cxt.restore();
            }
            drawClock();
            window.setInterval(drawClock, 1000);
        </script>
    </body>
    </html>
    
  • 相关阅读:
    django控制台输出sql日志
    Find概述
    命令大全
    京东智联云在 Serverless 的探索
    如何优雅地部署一个 Serverless Next.js 应用
    腾讯云 Serverless 保障《创造营》硬糖少女 C 位出道
    Serverless 应用实践及典型案例解析
    LeetCode 数组:62. 不同路径(动态规划 带记忆的递归)
    LeetCode 数组:56.合并区间(数组的自带排序函数 区间合并问题)
    LeetCode 数组:162. 寻找峰值(二分法)
  • 原文地址:https://www.cnblogs.com/qiailu/p/3665277.html
Copyright © 2011-2022 走看看