leiyanting

导航

 
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style type="text/css">
            * {
                margin: 0;
                padding: 0;
            }

            html,
            body {
                background-color: skyblue;
            }

            #clock {
                background-color: gray;
                position: absolute;
                left: 0;
                top: 0;
                right: 0;
                bottom: 0;
                margin: auto;
            }
        </style>
    </head>
    <body>
        <canvas id="clock" width="500" height="500"></canvas>
    </body>

    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
    <script type="text/javascript">
        var $clock = $('#clock');
        var clock = $('#clock')[0];
        if (clock.getContext) {
            var ctx = clock.getContext('2d');


            setInterval(function(){
                ctx.clearRect(0,0,$clock.width(),$clock.height());
                move()
            },1000)
            
            
            function move(){
                ctx.save();
                
                // 公共样式
                ctx.translate(250, 250);
                ctx.rotate(-90 * Math.PI / 180);
                ctx.lineWidth = 8;
                ctx.strokeStyle = "black";
                ctx.lineCap = "round";
                ctx.beginPath();
                
                // 最外层圆盘
                ctx.save();
                ctx.lineWidth = 14;
                ctx.strokeStyle = '#325FA2';
                ctx.beginPath();
                ctx.arc(0, 0, 140, 0, 360 * Math.PI / 180, false);
                ctx.stroke();
                ctx.restore();
                
                // 时针刻度
                ctx.save();
                for (var i = 0; i < 12; i++) {
                    ctx.rotate(30 * Math.PI / 180)
                    ctx.beginPath();
                    ctx.moveTo(100, 0);
                    ctx.lineTo(120, 0);
                    ctx.stroke()
                }
                ctx.restore();
                
                // 分针刻度
                ctx.save();
                for (var i = 0; i < 60; i++) {
                    if (i % 5 != 0) {
                        ctx.lineWidth = 4;
                        ctx.beginPath();
                        ctx.moveTo(117, 0);
                        ctx.lineTo(120, 0);
                        ctx.stroke()
                    }
                    ctx.rotate(6 * Math.PI / 180)
                }
                ctx.restore();
                
                
                // 获取时间
                var date = new Date();
                var s = date.getSeconds();
                var m = date.getMinutes()+s/60;
                var h = date.getHours()+m/60;
                
                // 时针
                ctx.save();
                ctx.lineWidth = 14;
                ctx.beginPath();
                ctx.rotate(h*30*Math.PI/180)
                ctx.moveTo(-20,0);
                ctx.lineTo(80,0);
                ctx.stroke();
                ctx.restore();
                
                // 分针
                ctx.save();
                ctx.lineWidth = 10;
                ctx.beginPath();
                ctx.rotate(m*6*Math.PI/180)
                ctx.moveTo(-28,0);
                ctx.lineTo(112,0);
                ctx.stroke();
                ctx.restore();
                
                // 秒针
                ctx.save();
                ctx.lineWidth = 6;
                ctx.strokeStyle = '#D40000';
                ctx.beginPath();
                ctx.rotate(s*6*Math.PI/180)
                ctx.moveTo(-30,0);
                ctx.lineTo(83,0);
                ctx.stroke();
                ctx.restore();
                
                // 中心圆盘
                ctx.save();
                ctx.fillStyle = '#D40000';
                ctx.beginPath();
                ctx.arc(0,0,10,0,360*Math.PI/180);
                ctx.fill();
                ctx.restore();
                
                // 秒针上的空心圆
                ctx.save();
                ctx.lineWidth = 6;
                ctx.strokeStyle = '#D40000';
                ctx.beginPath();
                ctx.rotate(s*6*Math.PI/180)
                ctx.arc(96,0,10,0,360*Math.PI/180);
                ctx.stroke();
                ctx.restore();
                
                ctx.restore();
            }

            
        }
    </script>
</html>

 

posted on 2021-09-28 20:36  leiyanting  阅读(33)  评论(0编辑  收藏  举报