<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        canvas {
            border: 1px solid red;
        }
    </style>
</head>
<body>
    <canvas width="400" height="400"></canvas>
    <script>
        const canvas = document.querySelector("canvas");
        const clock = canvas.getContext("2d");
        const W = canvas.offsetWidth;//获取当前canvas的宽
        const H = canvas.offsetHeight;//获取当前canvas的高
        let arr = [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];//生成一个数组
        const pi = Math.PI;
        //表盘部分
        function biaopan() {  
            //外边的圆
            clock.save();
            clock.translate(200, 200);
            clock.beginPath();
            clock.arc(0, 0, 200, 0, 2 * pi);
            clock.fill();
            clock.stroke();
   //里边的圆
            clock.beginPath();
            clock.arc(0, 0, 180, 0, 2 * pi);
            clock.strokeStyle = "red";
            clock.fillStyle="white"
            clock.fill();
            clock.stroke();
            clock.beginPath();
            clock.arc(0, 0, 2, 0, 2 * pi);
            clock.stroke();
//小时数的刻针
            clock.beginPath();
            for (let i = 0; i < 12; i++) {
                clock.beginPath();
                clock.moveTo(0, -180);
                clock.lineTo(0, -150);
                clock.stroke();
                clock.rotate(pi / 6);
            }
//生成60个小刻针
            clock.beginPath();
            for (let i = 0; i < 60; i++) {
                clock.beginPath();
                clock.moveTo(0, -180);
                clock.lineTo(0, -175);
                clock.strokeStyle = "red";
                clock.stroke();
                clock.rotate(2 * pi / 60);
            }
            //表盘生成数字
            for (let i = 0; i < arr.length; i++) {
                clock.beginPath();
                clock.moveTo(0, -180);
                clock.fillText(arr[i],0,-180)
                clock.strokeStyle = "red";
                clock.stroke();
                clock.rotate(2 * pi / 12);
            }
 
        };
        //时针部分
        function Dhour(hour) {
            clock.save();
            clock.beginPath();
            let rod = 2 * pi / 12 * hour;
            clock.rotate(rod);
            clock.lineWidth = "6";
            clock.moveTo(0, 0);
            clock.lineTo(0, -70);
            clock.strokeStyle = "black";
            clock.stroke();
            clock.restore();
        }
        //分钟
        function DMinutes(minute) {
            clock.save();
            clock.beginPath();
            let rod = 2 * pi / 60 * minute;
            clock.rotate(rod);
            clock.moveTo(0, 0);
            clock.lineTo(0, -100);
            clock.strokeStyle = "bule";
            clock.stroke();
            clock.restore();
        }
        //秒针的部分
        function DSeconds(second) {
            clock.save();
            clock.beginPath();
            let rod = 2 * pi / 60 * second;
            clock.rotate(rod);
            clock.moveTo(0, 0);
            clock.lineTo(0, -160);
            clock.strokeStyle = "green";
            clock.stroke();
            clock.restore();
        }
        function Draw() {
            clock.restore();
            clock.clearRect(0, 0, H, W)
            let date = new Date();
            let hours = date.getHours();
            let minutes = date.getMinutes();
            let seconds = date.getSeconds();
            biaopan();
            Dhour(hours);
            DMinutes(minutes);
            DSeconds(seconds);
        }
        //时间函数执行前 先执行一次
        Draw();
        setInterval(Draw, 1000)
    </script>
</body>
</html>