简单的圆钟实现(Html5+Css3+JavaScript)(附源码)

发布时间 2023-06-30 15:37:40作者: 冬天总要看海
 
1
<!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>简单的圆钟实现</title> 6 <style>
  7         #box {
  8             width: 300px;
  9             height: 300px;
 10             margin: 100px auto 0;
 11             border: 1px solid;
 12             background: url("圆钟.jpeg") no-repeat;
 13             background-size: 180%;
 14             background-position-x: -129px;
 15             position: relative;
 16         }
 17 
 18         #shi {
 19             width: 6px;
 20             height: 80px;
 21             background: #000000;
 22             position: absolute;
 23             left: 147px;
 24             top: 100px;
 25             transform-origin: 50% 63%;
 26         }
 27 
 28         #fen {
 29             width: 4px;
 30             height: 100px;
 31             background: #000;
 32             position: absolute;
 33             left: 148px;
 34             top: 80px;
 35             transform-origin: 50% 70%;
 36         }
 37 
 38         #miao {
 39             width: 2px;
 40             height: 120px;
 41             background: #ff0000;
 42             position: absolute;
 43             left: 149px;
 44             top: 70px;
 45             transform-origin: 50% 67%;
 46         }
 47 
 48         #dian {
 49             width: 4px;
 50             height: 2px;
 51             background: blue;
 52             position: absolute;
 53             left: 149px;
 54             top: 149px;
 55             transform-origin: 50% 67%;
 56         }
 57 
 58     </style>
 59 
 60 
 61 </head>
 62 <body>
 63 <div id="box">
 64     <div id="shi"></div>
 65     <div id="fen"></div>
 66     <div id="miao"></div>
 67     <div id="dian"></div>
 68 </div>
 69 </body>
 70 </html>
 71 <script>
 72     onload = function () {
 73         const miao = document.getElementById("miao")
 74         const fen = document.getElementById("fen")
 75         const shi = document.getElementById("shi")
 76 
 77         function setclock() {
 78             const time = new Date(),
 79                 h = time.getHours(),
 80                 m = time.getMinutes(),
 81                 s = time.getSeconds()
 82             miao.style.transform = 'rotate(' + s * 6 + 'deg)'
 83             //秒:60秒转一圈,一圈为360度,则一秒转6度
 84             //这里为什么不要加分钟和小时的度数呢? 因为1秒钟转动的时候分钟和小时是不变的
 85             fen.style.transform = 'rotate(' + (m + s / 60) * 6 + 'deg)'
 86             //分:1个小时有60分钟,60分钟转一圈,一圈有360度,则每分钟转360度除以60分钟=6度;这里应该是m*6+s/60*6
 87             // 提出来共同的*6变为(m+s/60)*6 为什么要加上秒呢 (分钟动一次,秒钟动60次,1分钟有60秒)因为当一分钟变到两分钟的时候,
 88             // 经过了60秒所以是s/60也就是加上每秒的度数 1分钟转的时候秒钟也在转
 89             shi.style.transform = 'rotate(' + (h + m / 60 + s / 60 / 60) * 30 + 'deg)'
 90 //时:一圈为360度,12小时制,那么1小时转动360/12=30度,一个小时有60分钟,当一个小时转到
 91 // 下一个小时的时候分钟转了360度(转了一圈),秒转了3600度(转了60圈1分钟秒钟转一圈),那么1个小时的度数就为h*30+m/60+s/60/60(也就是s/3600)
 92             //1小时转的时候分钟和秒钟也在不停地转所以要加上他们的度数
 93         }
 94 
 95         setclock()
 96         setInterval(setclock, 1000)
 97     }
 98 
 99 
100 </script>