Créer un horloge grâce à JavaScript

Imaginez une horloge permettant de montrer l’heure à vos utilisateurs, sur un site de voyage par exemple avec le fuseau horaire du pays de destination ? Créons ensemble cette magnifique horloge facilement grâce à JavaScript !

 

1ère étape

Commençons par le code HTML.

<div class="clock">
  <div class="wrap">
    <span class="heure"></span>
    <span class="minute"></span>
    <span class="seconde"></span>
    <span class="dot"></span>
  </div>
</div>

.clock délimite l’horloge, .wrap délimite l’arrière-plan de l’horloge, .heure, .minute, .seconde sont les aiguilles et .dot représente le rond central qui réuni les aiguilles.

 

2ème étape

Stylisons l'horloge et son arrière-plan.

.clock {
	 border-radius: 50%;
	 background: #fff;
	 border: 5px solid white;
	 box-shadow: inset 2px 3px 8px 0 rgba(0, 0, 0, 0.1);
}

.wrap {
	 position: relative;
	 width: 350px;
	 height: 350px;
}

 

3ème étape

Passons aux aiguilles.

.minute, .heure {
	 position: absolute;
	 height: 100px; width: 6px;
	 margin: auto;
	 top: -27%; left: 0;	bottom: 0; right: 0;
	 transform-origin: bottom center;
	 transform: rotate(0deg);
	 box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.4);
     background: black;
}

 

4ème étape

Affinons l'aiguille des minutes.

.minute {
	 position: absolute;
	 height: 130px;
	 width: 4px;
	 top: -38%;
	 left: 0;
	 box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.4);
	 transform: rotate(90deg);
}

Après avoir stylisé les aiguilles des minutes et des heures, nous allons ici styliser l’aiguille des minutes plus précisement pour les différencier.

 

5ème étape

Passons à l'aiguille des secondes.

.seconde {
	 position: absolute;
	 height: 90px;
	 width: 2px;
	 margin: auto;
	 top: -26%;
	 left: 0;
	 bottom: 0;
	 right: 0;
	 border-radius: 4px;
	 background: #ff4b3e;
	 transform-origin: bottom center;
	 transform: rotate(180deg);
}

Nous allons styliser et mettre en rouge l’aiguille des secondes.

 

6ème étape

Occupons-nous du rond central.

.dot {
	 position: absolute;
	 top: 0;
	 left: 0;
	 right: 0;
	 bottom: 0;
	 width: 12px;
	 height: 12px;
	 border-radius: 50%;
	 background: white;
	 border: 2px solid #1b1b1b;
	 border-radius: 50%;
	 margin: auto;
}

Ce rond central servira a réunir toutes les aiguilles en un seul point.

 

7ème étape

Terminons avec le JavaScript, pour rendre notre horloge fonctionnelle.

clock();

function clock() {
  const date = new Date();
  const hours = ((date.getHours() + 11) % 12 + 1);
  const minutes = date.getMinutes();
  const seconds = date.getSeconds();
  const hour = hours * 30;
  const minute = minutes * 6;
  const second = seconds * 6;
  
  document.querySelector('.heure').style.transform = `rotate(${hour}deg)`;

  document.querySelector('.minute').style.transform = `rotate(${minute}deg)`;

  document.querySelector('.seconde').style.transform = `rotate(${second}deg)`;
}

setInterval(clock, 1000);