练习题1_时钟.html 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <style>
  8. .box {
  9. width: 404px;
  10. height: 404px;
  11. border: 2px dashed black;
  12. position: fixed;
  13. top: 50%;
  14. left: 50%;
  15. transform: translate(-50%, -50%);
  16. }
  17. .clock {
  18. width: 400px;
  19. height: 400px;
  20. border: 2px solid black;
  21. border-radius: 50%;
  22. position: relative;
  23. }
  24. .clock .tick-line {
  25. width: 2px;
  26. height: 6px;
  27. background-color: black;
  28. position: absolute;
  29. left: 50%;
  30. transform: translateX(-50%);
  31. transform-origin: center 200px;
  32. }
  33. .clock .tick-line:nth-child(5n+1) {
  34. height: 12px;
  35. }
  36. /* .clock .tick-line:nth-child(2){
  37. transform:translateX(-50%) rotate(6deg);
  38. } */
  39. .clock .pointer div{
  40. position: absolute;
  41. left: 50%;
  42. transform: translateX(-50%);
  43. transform-origin: center bottom;
  44. transition: all 1s linear;
  45. }
  46. .clock .pointer .hour-pointer{
  47. width: 20px;
  48. height: 100px;
  49. background-color: blue;
  50. top:100px;
  51. }
  52. .clock .pointer .minute-pointer{
  53. width: 10px;
  54. height: 140px;
  55. background-color: red;
  56. top:60px;
  57. }
  58. .clock .pointer .second-pointer{
  59. width: 6px;
  60. height: 180px;
  61. background-color: green;
  62. top:20px;
  63. }
  64. </style>
  65. </head>
  66. <body>
  67. <div class="box">
  68. <div class="clock">
  69. <!-- 刻度 -->
  70. <div class="tick">
  71. <!-- <div class="tick-line"></div>
  72. <div class="tick-line"></div> -->
  73. </div>
  74. <!-- 指针 -->
  75. <div class="pointer">
  76. <!-- 小时指针 -->
  77. <div class="hour-pointer"></div>
  78. <!-- 分钟指针 -->
  79. <div class="minute-pointer"></div>
  80. <!-- 秒指针 -->
  81. <div class="second-pointer"></div>
  82. </div>
  83. </div>
  84. </div>
  85. <script>
  86. // 获取元素
  87. var tick = document.querySelector(".tick");
  88. var hourPointer = document.querySelector(".hour-pointer");
  89. var minutePointer = document.querySelector(".minute-pointer");
  90. var secondPointer = document.querySelector(".second-pointer");
  91. // 循环创建刻度线
  92. for (var i = 0; i < 60; i++) {
  93. // 创建刻度线元素
  94. var line = document.createElement("div");
  95. // 给刻度线元素添加类名
  96. line.classList.add("tick-line");
  97. // 给刻度线元素添加角度
  98. line.style.transform = "translateX(-50%) rotate(" + i * 6 + "deg)";
  99. // 给刻度线元素添加到刻度容器中
  100. tick.appendChild(line);
  101. }
  102. // 实现时钟的动画
  103. setInterval(function(){
  104. // 获取当前时间
  105. var time = new Date();
  106. // 获取当前时间的小时
  107. var hour = time.getHours();
  108. // 获取当前时间的分钟
  109. var minute = time.getMinutes();
  110. // 获取当前时间的秒
  111. var second = time.getSeconds();
  112. // 计算秒针的角度
  113. secondPointer.style.transform = "translateX(-50%) rotate(" + second * 6 + "deg)";
  114. // 计算分钟针的角度
  115. minutePointer.style.transform = "translateX(-50%) rotate(" + minute * 6 + "deg)";
  116. // 计算小时针的角度
  117. hourPointer.style.transform = "translateX(-50%) rotate(" + hour * 30 + "deg)";
  118. },1000)
  119. </script>
  120. </body>
  121. </html>