Magazine Graphisme

Afficher un compteur sous forme de jauge en HTML

Publié le 22 janvier 2009 par Daxlebo

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 :

Afficher un compteur sous forme de jauge en HTML

Jauge vide

Afficher un compteur sous forme de jauge en HTML

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

Retour à La Une de Logo Paperblog

A propos de l’auteur


Daxlebo 16 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Dossier Paperblog