Crea un reloj analógico desde cero con HTML, CSS y JavaScript.
Marcado HTML
Usaremos etiquetas <div>
para realizar el marcado del reloj.
<div class="clock">
<div class="hour hand" id="hour"></div>
<div class="minute hand" id="minute"></div>
<div class="seconds hand" id="seconds"></div>
<img src="https://raw.githubusercontent.com/xantosromerodev/xantosromerodev/d0ab65f78a8e7123bb9a483cdd9f01e90528990b/clock.svg" alt="Reloj Analogo" />
</div>
Estilos CSS
Las clases CSS le dan la apariencia definitiva al reloj analógico.
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
body {
height: 100vh; /* altura total del viewport del dispositivo */
background: linear-gradient(to bottom, #2196f3 50%, #16191e 50%);
}
.clock {
background: #282a35;
height: 320px;
width: 320px;
position: absolute;
transform: translate(-50%, -50%);
top: 50%;
left: 50%;
box-sizing: content-box;
border-radius: 50%;
border: 15px solid #242931;
box-shadow: 15px 15px 35px rgba(0, 0, 0, 0.2),
inset 0 0 30px rgba(0, 0, 0, 0.4);
}
img {
position: relative;
}
.hand {
position: absolute;
background-color: #ffffff;
margin: auto;
left: 0;
right: 0;
border-radius: 5px;
transform-origin: bottom;
}
.hour {
height: 60px;
width: 10px;
top: 100px;
}
.minute {
height: 80px;
width: 5px;
top: 80px;
}
.seconds {
height: 90px;
width: 3px;
top: 70px;
background-color: #2196f3;
}
Interacción y movimiento
JavaScript le da movimiento y dirección a las manecillas del reloj.
let hour = document.getElementById("hour");
let minute = document.getElementById("minute");
let seconds = document.getElementById("seconds");
let set_clock = setInterval(() => {
let date_now = new Date();
let hr = date_now.getHours();
let min = date_now.getMinutes();
let sec = date_now.getSeconds();
let calc_hr = hr * 30 + min / 2;
let calc_min = min * 6 + sec / 10;
let calc_sec = sec * 6;
hour.style.transform = `rotate(${calc_hr}deg)`;
minute.style.transform = `rotate(${calc_min}deg)`;
seconds.style.transform = `rotate(${calc_sec}deg)`;
}, 1000);
Referencias
El contenido de este artículo es original de:
"La mejor manera de aprender a programar es practicando todos los días"