Progress Bar in HTML

Der Balken nennt seinen Vorgang

Fortschritt, Messanzeige, Attributwerte: drei Stellen am Balken.

Website prüfen
Beispiel im Prüfbericht Markierter Befund
Markierter Befund · Kritisch · WCAG 1.1.1Fortschrittsanzeige ohne Namen

Fortschritt richtig abbilden

Ein Balken hat Wert, Zustand und Stimme

Die sichtbare Füllung ist nur eine Ebene. Native HTML-Semantik liefert den Wert, eine Statuszeile meldet ausgewählte Zwischenstände – und unbekannte Dauer bleibt ehrlich ohne Prozentzahl.

TransferkonsoleKonzeptionelle Darstellung
Bestimmter Fortschritt

Datei wird gelesen

42%
Element
<progress>
Name
Datei wird gelesen
Wert
42 von 100
Unbestimmter Fortschritt

Verbindung wird aufgebaut

ohne Wert

Fehlt value, zeigt das Element Aktivität, aber keine erfundene Restdauer. Der Name erklärt weiterhin, welcher Vorgang läuft.

Der Wert läuft. Die Ansage setzt Marken.

Das Balken-Element darf jeden Messwert erhalten. Die Live-Region meldet nur ausgewählte Zwischenstände und den Abschluss, damit sie andere Inhalte nicht übertönt.

  1. 0Bereit
  2. 2525 Prozent
  3. 5050 Prozent
  4. 7575 Prozent
  5. 100Fertig

Die wichtige Abzweigung

Ein fester Stand ist kein Fortschritt

Belegter Speicher verändert sich, aber keine Aufgabe läuft auf ein Ende zu. Dafür ist meter gedacht. Die Bereiche geben dem Wert Kontext; sichtbarer Text trägt die Einordnung zusätzlich zur Farbe.

Bestimmt und unbestimmt in HTML

index.html
<label for="datei">Datei auswählen</label>
<input id="datei" type="file">

<div id="lesebereich" aria-busy="false">
  <label for="lesefortschritt">Datei wird gelesen</label>
  <progress id="lesefortschritt" value="0" max="100">
    0 Prozent
  </progress>
</div>

<p id="lesestatus" role="status">Bereit.</p>

<label for="verbindung">Verbindung wird aufgebaut</label>
<progress id="verbindung"></progress>

Der Text im progress-Element ist Rückfallinhalt, kein zugänglicher Name. Diesen liefert das verknüpfte label.

Echte Werte aus FileReader

progress.js
const input = document.querySelector('#datei');
const feld = document.querySelector('#lesebereich');
const balken = document.querySelector('#lesefortschritt');
const status = document.querySelector('#lesestatus');
const reader = new FileReader();
let naechsteMeldung = 25;

input.addEventListener('change', () => {
  const datei = input.files[0];
  if (!datei) return;
  feld.ariaBusy = 'true';
  balken.value = 0;
  naechsteMeldung = 25;
  status.textContent = 'Datei wird gelesen.';
  reader.readAsArrayBuffer(datei);
});

reader.addEventListener('progress', (event) => {
  if (!event.lengthComputable) {
    balken.removeAttribute('value');
    return;
  }
  balken.max = event.total;
  balken.value = event.loaded;
  const prozent = Math.round(event.loaded / event.total * 100);
  if (prozent < naechsteMeldung) return;
  status.textContent = prozent + ' Prozent gelesen.';
  naechsteMeldung = Math.floor(prozent / 25) * 25 + 25;
});

reader.addEventListener('load', () => {
  feld.ariaBusy = 'false';
  status.textContent = 'Datei vollständig gelesen.';
});

reader.addEventListener('error', () => {
  feld.ariaBusy = 'false';
  status.textContent = 'Datei konnte nicht gelesen werden.';
});

lengthComputable entscheidet, ob loaded / total eine belastbare Spanne bildet. Andernfalls entfernt das Skript value.

Die Messanzeige daneben

low, high und optimum ordnen den Stand ein. Der Wortlaut „beobachten“ bleibt sichtbar, weil Farbe allein die Aussage nicht trägt.

<label for="speicher">Belegter Speicherplatz</label>
<meter id="speicher" min="0" max="100"
  low="60" high="85" optimum="20" value="72">
  72 von 100 Gigabyte belegt
</meter>
<p>72 GB belegt · Bereich beobachten</p>

So prüfen Sie es

  1. Lesen Sie Name und Wert des bestimmten Balkens mit einem Vorleseprogramm aus.
  2. Entfernen Sie value. Es darf anschließend keine Prozentangabe geben.
  3. Starten Sie die Aufgabe. Der Fokus bleibt, die Statusmeldungen werden trotzdem ausgegeben.
  4. Prüfen Sie feste Messstände getrennt: Dafür verwenden Sie meter.

Aus dem Prüfbericht

Drei Stellen, drei Befunde

Kritisch aria-valuenow trägt keine Zahl Regel aria-valid-attr-value

Werte wie „40%“ oder „unbekannt“ sind ungültig. aria-valuenow nimmt nur eine Zahl; bei unbekannter Dauer entfällt es.

Anleitung: Gültige ARIA-Attributwerte setzen

Zum Mitnehmen

Der Fortschrittsbalken, korrigiert

Ein Name, gültige Werte, eine benannte Messanzeige.

Korrektur in 3 Schritten ansehen
  1. Dem Balken einen Namen geben

    Die benachbarte Überschrift benennt den Balken nicht automatisch. aria-label sagt, welcher Vorgang hier läuft.

    KorrekturvergleichSchritt 1 · ARIA

    Vorher

    <div class="fortschritt" role="progressbar"
      aria-valuemin="0" aria-valuemax="100" aria-valuenow="40">
    </div>

    Nachher

    <div class="fortschritt" role="progressbar"
      aria-valuemin="0" aria-valuemax="100" aria-valuenow="40"
      aria-label="Datei wird hochgeladen">
    </div>

    Markierte Zeilen wurden geändert

    So prüfen Sie es Fahren Sie mit einem Vorleseprogramm auf den Balken. Es nennt jetzt den Vorgang vor dem Wert.

  2. Gültige Werte setzen

    aria-valuenow nimmt nur eine Zahl ohne Einheit. Ist die Dauer unbekannt, lassen Sie das Attribut ganz weg.

    KorrekturvergleichSchritt 2 · ARIA

    Vorher

    <div role="progressbar" aria-valuenow="40%"
      aria-label="Datei wird hochgeladen"></div>

    Nachher

    <div role="progressbar" aria-valuenow="40"
      aria-label="Datei wird hochgeladen"></div>

    Markierte Zeilen wurden geändert

    So prüfen Sie es Ein Vorleseprogramm sagt jetzt „40 Prozent“, statt den Wert zu überspringen.

  3. Messanzeige und Fortschritt trennen

    Ein fester Stand ist eine Messanzeige, kein Fortschritt. Beide brauchen einen Namen, auch wenn der Text im Element steht.

    KorrekturvergleichSchritt 3 · ARIA

    Vorher

    <div role="meter" aria-valuenow="3" aria-valuemin="0"
      aria-valuemax="5">Speicherplatz</div>

    Nachher

    <div role="meter" aria-valuenow="3" aria-valuemin="0"
      aria-valuemax="5" aria-label="Speicherplatz">Speicherplatz</div>

    Markierte Zeilen wurden geändert

    So prüfen Sie es Ein Vorleseprogramm sagt „Speicherplatz, 3 von 5“ statt nur die Zahl.

Werbung

Kostenloser Website-Barrierefreiheits-Check

Website auf Barrierefreiheit prüfen.

Technische WCAG-Warnsignale erkennen. Kritische Stellen zuerst prüfen.

Der Website-Check ist bereit.

Werbung

Ein letzter Schritt

Prüfen, bevor Sie gehen.

Finden Sie automatisch erkennbare Barrieren auf Ihrer eigenen Website.

Website prüfen

Kostenlos starten · keine Installation

Automatisches Screening. Tastaturbedienung und Screenreader bleiben manuelle Prüfung.