как заставить стрелки часов двигаться / вращаться (html, css)

#javascript #html #css

#javascript #HTML #css

Вопрос:

я пытался создать простые рабочие часы, но я понятия не имею, как заставить стрелки часов вращаться. я пытался использовать «@keyframes», чтобы попытаться заставить его работать, но я не знаю, что вставить в «before». есть ли способ заставить его вращаться, используя только css, или использование javascript будет проще. по ссылке ниже показана моя работа, но вы также можете посмотреть ниже и увидеть мой код.

https://codepen.io/dior44/pen/GRZMZdy

    
h1 {
  margin: -40px 0 0 0;
  font-size: 50px;
  position: relative;
  top: 100px;
}
div {
  margin: 0 auto;
}
.clock {
  height: 400px;
  width: 400px;
  border-radius: 400px;
  background: #cccc;
}
.dot {
  height: 60px;
  width: 60px;
  border-radius: 60px;
  background: #aaa;
  position: relative;
  top: 120px;
  left: -27px;
  z-index: -1;
}
.hours {
  width: 7px;
  height: 90px;
  background: blue;
  position: relative;
  top: 100px;
  
}
.minutes {
  width: 5px;
  height: 170px;
  background: black;
  position: relative;
  top: -50px;
  
}
.seconds {
  width: 3px;
  height: 220px;
  background: red;
  position: relative;
  top: -10px;
  animation-name: second;
  animation-duration: 1s;
}

@keyframes second {
  from {
    
  }
}

h2 {
  position: relative;
  top: 45px;
  left: 738px;
  font-size: 35px;
  margin: -20px 0 0 0;
}
h3 {
  margin: -140px 0 0 0;
  font-size: 35px;
  position:relative;
  top: 310px;
  left: 920px;
}
h4 {
  margin: 3px 0 0 0;
  position: relative;
  top: 268px;
  left: 570px;
  font-size: 35px; 
}
h5 {
  margin: 20px 0 0 0;
  position: relative;
  top: 400px;
  left: 738px;
  font-size: 35px;
}  
 <h1>Clock</h1>
<h2>12</h2>
<h3>3</h3>
<h4>9</h4>
<h5>6</h5>
<body>
  <div class="clock">
  <div class="hours">
  <div class="minutes">
  <div class="seconds">
  <div class="dot">
  <div class="12">
  <div class="3">
  <div class="6">
  <div class="9">
</body>  

Комментарии:

1. Вы пробовали использовать transform свойство?

2. visnos.com/demos/clock . Щелкните правой кнопкой мыши «проверить».

3. Проверьте это codepen.io/kylewetton/pen/QJbOjw

4. Да, попробуйте что-то вроде transform: rotate(45deg); transform-origin: 50% 66% . Вам придется настроить начало координат, чтобы найти нужное место.

5. Попробуйте это jsfiddle.net/tejas14883/18quksb9/7

Ответ №1:

Чистая секундная стрелка HTML / CSS:

 #clock_container {
  position: absolute;
  top: 20px;
  left: 20px;
  width: 150px;
  height: 150px;
  border-radius: 50%;
  border: 2px solid black;
}

#seconds {
  height: 50%;
  width: 0px;
  box-sizing: border-box;
  border: 1px solid black;
  top: 0%;
  left: 50%;
  position: absolute;
  transform-origin: bottom;
  /* of-course, would be 60s */
  animation: secondsMotion 10s infinite linear;
}

@keyframes secondsMotion {
  0% {
    transform: rotate(0deg);
  }

  100% {
    transform: rotate(360deg);
  }
}  
 <div id="clock_container">
  <div id="seconds"></div>
</div>  

Если вы хотели начать с правильного времени — с небольшим количеством JS на ранней стадии:

 var sec = new Date().getSeconds();
var sec_start = (sec/60) * 360   'deg';
var sec_end = (sec/60) * 360   360   'deg';
document.documentElement.style.setProperty("--sec-rot-start", sec_start);
document.documentElement.style.setProperty("--sec-rot-end", sec_end);
 
  

и затем, в ключевых кадрах:

 @keyframes secondsMotion {
  0% {
    transform: rotate(var(--sec-rot-start));
  }

  100% {
    transform: rotate(var(--sec-rot-end));
  }
}