Vanilla JS : créer des éléments aux couleurs aléatoires

On a souvent besoin de distinguer des éléments rapidement et c’est très simple de le faire visuellement, avec des couleurs, pour bien différencier les blocs.

Voici une solution simple et élégante pour créer des éléments aux couleurs aléatoires, en utilisant du javascript natif, que l’on appelle Vanilla JS.

Cela devrait vous permettre d’obtenir ceci – des blocs dont la couleur est générée aléatoirement et qui change à chaque rafraichissement de la page.

J’inclus ici un bouton qui permet de rafraîchir aléatoirement les couleurs de notre bloc:

  • Color 1
  • Color 2
  • Color 3
  • Color 4
  • Color 5
  • Color 6

Conception du script

HTML

Pour la partie HTML, on part sur quelque chose de très simple: une liste à puces tout à fait standard mais vous pouvez bien sûr choisir d’utiliser d’autres types d’éléments:

<ul id="random-colors">
<li>Color 1</li>
<li>Color 2</li>
<li>Color 3</li>
<li>Color 4</li>
<li>Color 5</li>
<li>Color 6</li>
</ul>Code language: HTML, XML (xml)

CSS

On affiche une grille CSS de 3 colonnes pour les éléments de notre liste:

* {
  margin: 0;
  padding: 0;
  font-family: Arial, sans-serif;
}
ul#random-colors {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
}
ul#random-colors li {
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px dashed deeppink;
  flex-direction: column;
  height: 100px;
  padding: 0;
  margin: 0;
  list-style-type: none;
}Code language: CSS (css)

Vanilla JS

Et voici le coeur du script, la fonction qui choisit un nombre aléatoire pour en dériver une couleur:

const elements = document.querySelectorAll("ul#random-colors li");
[...elements].forEach((element) => {
  element.style.backgroundColor = getRandomColor();
});

function getRandomColor() {
  var color = `#${crypto.getRandomValues(new Uint32Array(1))[0].toString(16).padStart(8, 0).slice(-6)}`
  return color;
}Code language: JavaScript (javascript)

Fonctionnement du script

On commence par stocker dans la constante elements tous les éléments de notre liste (qui possède l’identifiant random-colors ).

Ensuite, nous passons la liste de chaque élément en revue avec une boucle forEach et on assigne à chacun une couleur de fond grâce à notre fonction getRandomColor().

La fonction getRandomColor() utilise les fonctions de chiffrement de JavaScript pour obtenir des valeurs avec davantage d’entropie que Math.random().

La méthodeCrypto.getRandomValues() nous donne de solides valeurs aléatoires (cryptograpiquement parlant).

Le tableau Uint32Array nous donne un entier de 32 bits. Nous le transformons avec toString(16) pour obtenir une valeur hexadécimale.

Ensuite, padStart(8, 0) nous permet d’ajouter autant de 0 que nécessaire pour obtenir un entier de 8 caractères et slice(-6) nous permet de garder uniquement les 6 derniers caractères qui formeront notre code couleur.

Au final, nous obtenons une couleur unique pour chaque élément de notre liste.

Vous souhaitez enrichir votre site avec de nouvelles fonctionnalités ? Ensemble, donnons vie à vos idées, simplement et efficacement.

Parlons de vos besoins spécifiques »

Matt

Développeur certifié WordPress & WooCommerce chez Codeable, administrateur système et enseignant-chercheur, je mets mon expertise au service de vos projets web.

Ma priorité : des sites performants, fiables et sécurisés, pensés pour offrir la meilleure expérience utilisateur. J’accompagne chaque client avec écoute et pédagogie, pour transformer vos idées en solutions concrètes et durables.

Profitez de solutions WordPress et WooCommerce sur-mesure, pensées pour optimiser durablement votre site.
Explorez les leviers pour booster l’impact de votre site web.

Opinions