HTML progress-tag

Bij het uitvoeren van langdurige taken door een website, bijvoorbeeld een groot bestand downloaden, is het nuttig om iets op het scherm te laten bewegen. De gebruiker ziet dan dat er wat gebeurt (of lijkt te gebeuren ).

Een goede aanpak is het gebruik van een zg. progress-bar of voortgangsbalk, een soort streep die langer wordt naarmate het proces vordert. Elders op deze site, in de rubriek "Berekeningen uitvoeren", vind je een aantal van dergelijke progress-bars, die allemaal geschreven zijn in HTML en JavaScript. Dat dateert uit de tijd dat HTML nog niet beschikte over een tag voor het maken van een progress-bar.

Met de komst van HTML5 is dat veranderd. In het volgende wordt de tag <progress> besproken.

Om <progress> goed te gebruiken heb je eigenlijk altijd een<label> nodig. Dat betekent dat <progress> een id moet hebben dat de <progress>-tag aan het <label> koppelt.
De code voor een progress-bar in zijn eenvoudigste vorm is:
 
<label for="demo-1">Eenvoudige progress-bar : <label>
<progress id="demo-1" value="45" max="100"> 45 </progress>

Dit geeft op het scherm:

45

De tekst ' 45 ', die tussen de begin- en eindtag staat, verschijnt alleen in beeld als de browser <progress> niet ondersteunt. Dat heb je alleen met oudere browsers; je kunt het ook weg laten.

De attributen die specifiek zijn voor de <progress>-tag staan in de tabel hieronder:

Eigenschap Betekenis
value 
Lengte van het gekleurde deel van de balk. Dit is een getal dat niet groter mag zijn dan max. De lengte van het gekleurde deel wordt berekend met:
Lengte = value / max × totale lengte van de balk.
max 
Specificeert de omvang van de uit te voeren taak.
De default-waarde is 1. Dat betekent dat, als je de default-waarde gebruikt, value een getal is tussen 0 en 1.

Het verzetten van de balk doe je met JavaScript. Stel: Je wilt de waarde 45 vervangen door 65. De JavaScript- opdracht daarvoor is:

document.getElementById('demo-1').value = "65"

Het gevolg is dat de blauwe balk langer wordt. Als je een lagere waarde opgeeft dan op dat moment is ingesteld, wordt de balk korter.
Elke keer dat een deel van het (reken-)proces klaar is, moet je bovenstaande code gebruiken om de balk aan te passen.

Indeterminate progress-bar
De hierboven beschreven progress-bars zijn determinate (bepaald). Dat betekent dat de blauwe balk een zekere, met value ingestelde, waarde heeft.

Als je value weglaat, wordt de progress-bar indeterminate (onbepaald). Zo'n progress-bar ziet er uit zoals hieronder.

onbepaald

De code is:
 
<label for="demo-1">Indeterminate progress-bar : <label>
<progress id="demo-1"> onbepaald </progress>

Een probleem met de opmaak
Er is met de tag <progress> is vreemds aan de hand:

De moraal van dit verhaal: (Op het moment dat dit geschreven wordt)
Wees voorzichtig met de HTML <progress>-tag. Als je wilt dat de progress-bar er in elke browser er hetzelfde uitziet, programmeer hem dan zelf of gebruik een progress-bar die je in veel platforms (o.a. Bootstrap, W3) kunt vinden.

Opmerking:
 
Voor meer statische zaken zoals een percentage disk gebruik of een aantal bezoekers, gebruik je tag <meter>.

 
terug

html-613; Laatste wijziging: 15 november 2020