Die CSS transform
property wird verwendet, um viele verschiedene Transformationen zu steuern, die Sie suchen, ist rotate
.
Rotationen werden in entweder deg
angegeben (Grad, 0-360), rad
(Radiant, 0-2 * π) oder turn
(0-1)
ich für die turn
in diesem Fall gehen würde, wie die Berechnung der Rotation sehr geradlinig ist: now/max
(zB drei Uhr am Nachmittag: 15/24
)
Einfaches Beispiel:
(Anmerkung ich habe nicht zu viel mit Ausrichtung der Griffe gestört)
setInterval(function() {
var date = new Date(),
positions = [
date.getHours()/24,
date.getMinutes()/60,
date.getSeconds()/60
],
clock = document.querySelector('.clock');
positions.forEach(function(rotation, index) {
clock.children[index].style.transform = 'rotate(' + rotation + 'turn)';
});
}, 1000);
.clock {
position: relative;
width: 200px;
height: 200px;
border-radius: 50%;
border: 1px solid gold;
}
.clock > * {
position: absolute;
bottom: 50%;
left: 50%;
height: 50%;
margin-left: -1px;
border: 2px solid #000;
transform-origin: bottom;
}
.hourhand {
height: 30%;
}
.sechand {
border-color: #f00;
}
<div class="clock">
<div class="hourhand"></div>
<div class="minutehand"></div>
<div class="sechand"></div>
</div>
Wenn Sie eine Rolex-Effekt möchten (was nicht pro Sekunde nicht ankreuzen), können Sie das Intervall sehr kurz eingestellt (z 20 ms) und berechnet die zweite Umdrehung basierend auf getTime
statt getSeconds
(getTime
liefert die Anzahl von Millisekunden seit der "Unix Epoch" (1970-01-01 00:00:00.000
), z.B.:
date.getTime()/60000
> Warum haben wir mit 6 multipliziert? –
Um eine volle Umdrehung zu machen, brauchen wir 360 Grad von unserem Sekundenwert, also 360/60 = 6. Dasselbe kann mit den Einheiten 'rad' /' turn' gemacht werden. –