Avancé10 min de lecture

Meter, Progress & Output

Apprends les éléments HTML sémantiques pour afficher des mesures, des indicateurs de progression et des résultats calculés : meter, progress et output.

L'élément <progress>

L'élément <progress> représente la progression d'une tâche.

Progression déterminée (complétion connue)

html
<progress value="70" max="100">70%</progress>
  • value — Progression actuelle.
  • max — Valeur maximale (par défaut 1 si omis).
  • Le texte entre les balises est un fallback pour les navigateurs qui ne supportent pas l'élément.

Progression indéterminée (durée inconnue)

Omets l'attribut value pour afficher un indicateur animé indéterminé :

html
<progress>Chargement...</progress>

Les navigateurs affichent ceci comme une animation pulsante ou cyclique, indiquant qu'un travail est en cours mais que le pourcentage de complétion est inconnu.

Ajoute toujours une étiquette textuelle près de la barre de progression pour que tous les utilisateurs (y compris ceux utilisant des lecteurs d'écran) comprennent ce qui est suivi.

L'élément <meter>

L'élément <meter> représente une mesure scalaire dans une plage connue — comme l'utilisation du disque, un score de test ou une note de pertinence. Il n'est pas destiné à la progression ; utilise <progress> pour ça.

Attributs

AttributDescription
valueValeur actuelle (requis)
minBorne minimale (par défaut : 0)
maxBorne maximale (par défaut : 1)
lowEn dessous = plage "basse"
highAu-dessus = plage "haute"
optimumLa valeur idéale

Le navigateur colore la barre du meter différemment selon où value se situe par rapport à low, high et optimum :

  • Vert quand la valeur est proche de l'optimum.
  • Jaune dans la zone de prudence.
  • Rouge quand loin de l'optimum.
html
<!-- Utilisation du disque : 80% — dans la zone haute/d'avertissement -->
<meter value="0.8" min="0" max="1" low="0.3" high="0.7" optimum="0.2">
  80% plein
</meter>

L'élément <output>

L'élément <output> représente le résultat d'un calcul ou d'une action utilisateur. C'est une région live — les lecteurs d'écran annoncent les changements de son contenu.

L'attribut for

L'attribut for liste les IDs des éléments qui ont contribué au résultat, établissant une relation :

html
<form oninput="result.value = parseInt(a.value) + parseInt(b.value)">
  <input type="number" id="a" value="10"> +
  <input type="number" id="b" value="20"> =
  <output name="result" for="a b">30</output>
</form>

L'élément <output> :

  • A un role="status" ARIA implicite — les changements sont annoncés par les lecteurs d'écran.
  • Peut être utilisé en dehors des formulaires pour toute valeur calculée ou dérivée.
  • Supporte l'attribut name pour la soumission de formulaire.

Les trois éléments ensemble

html
<h3>Tableau de bord</h3>

<!-- Progress : téléchargement de fichier -->
<label for="upload">Progression du téléchargement :</label>
<progress id="upload" value="65" max="100">65%</progress>
<span>65%</span>

<!-- Meter : utilisation du disque -->
<label for="disk">Utilisation du disque :</label>
<meter id="disk" value="0.7" min="0" max="1"
       low="0.3" high="0.7" optimum="0.2">70%</meter>
<span>70%</span>

<!-- Meter : score de test (bon) -->
<label for="score">Score du test :</label>
<meter id="score" value="85" min="0" max="100"
       low="40" high="70" optimum="100">85/100</meter>
<span>85/100</span>

<!-- Output : calcul -->
<form oninput="total.value = parseInt(price.value) * parseInt(qty.value)">
  <label>Prix : <input type="number" id="price" value="10"></label>
  <label>Qté : <input type="number" id="qty" value="3"></label>
  <p>Total : <output name="total" for="price qty">30</output></p>
</form>

Quelle est la différence clé entre <progress> et <meter> ?

Prêt à pratiquer ?

Crée ton compte gratuit pour accéder à l'éditeur de code interactif, lancer les défis et suivre ta progression.