#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));
}
}