Afficher un compteur sous forme de jauge en HTML

Pour afficher de manière graphique un chiffre qui évolue entre une valeur minimale et une valeur maximale, la jauge est un outil très pratique. A l’image du thermomètre, elle est compréhensible du premier coup d’oeil et sa mise en oeuvre en HTML est d’une simplicité enfantine. Explications.

Pour afficher de manière graphique un chiffre qui évolue entre une valeur minimale et une valeur maximale, la jauge est un outil très pratique. A l’image du thermomètre, elle est compréhensible du premier coup d’oeil et sa mise en oeuvre en HTML est d’une simplicité enfantine. Explications.

Deux images superposées

Pour réaliser une jauge, nous aurons besoin de deux images : la jauge vide et la jauge pleine. Voici les images que j’ai employées :

Jauge vide

Jauge pleine

L’astuce consiste à superposer deux blocs <div> ayant pour image de fond la jauge vide ou pleine, en faisant varier la hauteur du bloc contenant la jauge pleine en fonction de la valeur (et sa marge haute, pour qu’il soit toujours calé en bas et aligné sur le fond. Voici à quoi ressemble la jauge du dessus sans celle du dessous :

Jauge remplie à 1%

height: 4px; margin-top:44px;

Jauge remplie à 50%

height:24px; margin-top:24px;

Jauge remplie à 100%

height:44px; margin-top:4px

Jauge remplie à plus de 100%

height:48px; margin-top:0;

Il suffit de remplacer le fond gris par l’image de la jauge vide dans le bloc du dessous pour avoir un thermomètre visuellement correct.

Le code source

CSS

.jaugevide {
height:48px;
width:18px;
background: transparent url(images/jaugevide.png) no-repeat bottom center;
}

.jaugepleine {
height:48px;
width:18px;
background: transparent url(images/jaugepleine.png) no-repeat bottom;
}

HTML

<div class="jaugevide">
<div class="jaugepleine" style="height:24px;margin-top:24px">
</div>
</div>

Comment régler la hauteur

Evidemment, il sera nécessaire de régler la hauteur de la barre, le plus souvent par l’intermédiaire d’un langage type PHP.

Pour calculer la hauteur en PHP, vous aurez besoin de variables :

  • la valeur minimale $val_mini indiquée par la jauge (ex. 0). Si la variable réelle est au dessous, elle restera sur cette valeur
  • la valeur cible $val_cible de votre jauge, correspondant au but à atteindre (ex. 100°c, 250 euros, 10000 clics). Elle pourra être marquée par une graduation particulière sur l’image.
  • le nombre de pixels minimal $marge_bas de votre jauge (3 dans mon image, puisque l’image comporte quelques pixels de bordure)
  • le nombre de pixels de marge haute $marge_haut de votre jauge (3 dans mon image, puisque l’image comporte quelques pixels de bordure)
  • la hauteur en pixels $hauteur_jauge de votre jauge
  • la valeur actuelle de la variable $valeur.

On calculera donc la hauteur $hauteur_jauge avec la formule suivante :

$hauteur_jauge = round( ($valeur-$val_mini) / ($val_cible - $val_mini) * ($hauteur_jauge - $marge_bas - $marge_haut) + $marge_bas);

Exemple :


// Jauge de température
// Toutes les valeurs sont en pixels

$valeur = 15 ;
$val_cible = 40;
$val_mini = -10;
$hauteur_jauge = 48;
$marge_bas = 3;
$marge_haut = 3;

// Affiche 24, soit la hauteur en px du thermomètre

Il ne reste plus qu’à mettre à jour cette hauteur en intégrant le code HTML ci-dessus.

Raffinements

Plusieurs pistes peuvent-être explorées pour enrichir cette jauge basique :

  • l’animer via Javascript : un framework de type JQuery pourra faire varier dynamiquement la taille du div .jaugepleine
  • graduer la jauge de manière fine : avec une image de plus grande taille, cela doit être possible
  • changer la couleur une fois le but atteint : au delà de la valeur cible, on pourra changer l’image de fond (via une classe .atteint par ex.) pour afficher une jauge verte
Outil de référencement professionnel - essai gratuit Ce contenu a été publié dans Webdesign, avec comme mot(s)-clé(s) , , , , , , , . Vous pouvez le mettre en favoris avec ce permalien.

5 réponses à Afficher un compteur sous forme de jauge en HTML

  1. Sylvain dit :

    Ah ouais, le thermomètre peut faire un bon indicateur sur un tableau de bord. Genre le nombre de mail important non répondu, plus t’en as, plus ça chauffe ! :D

  2. Très bonne idée, en effet.

  3. Phyllis dit :

    L’idée est non seulement bon, mais très originale et nouvelle. C’est ce que vous avez besoin d’avoir un cerveau à penser d’une telle?;)

  4. Patrick dit :

    Bonjour,
    Je viens d’essayer, si cela marche bien sur internet explorer, il ne fonctionne pas sur firefox, une idée de pourquoi ?

    Patrick

  5. Linda dit :

    Afficher un compteur sous forme de jauge en HTML et le nombre de visiteurs ne doit pas dépasser 37 :)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *