Gå til innholdet

Progress

Klassen settes på et ekte <progress>. Elementet har semantikken innebygd: nettleseren melder det som role="progressbar" og leser opp hvor langt det er kommet, så du skriver verken rolle, aria-valuenow eller aria-valuemax. Bygger du stolpen av <div>-er, må du skrive alt det selv, og holde det i takt med tallet.

Vet du ikke hvor langt det er kommet, er Spinner riktigere.

Byggefunksjonen skriver alltid ut max, i strid med regelen om at en standardverdi ikke gir noe attributt. Den regelen gjelder utseende, der CSS-en alt har svaret. max er semantikk, og HTMLs egen standard er 1:

<progress value="40"></progress>

Den stolpen er full, ikke 40 prosent, og ingenting sier fra. Skriver du markupen for hånd, oppgi begge.

Utelater du value, blir stolpen ubestemt, og en stripe sveiper over den. Det sier «noe pågår» uten å love et tall:

<progress class="fs-progress" aria-label="Henter søknadene dine"></progress>

Det er det samme Spinner sier. Velg én av dem på samme sted, ellers melder siden den samme ventingen to ganger.

data-colorBrukes til
(utelatt)Noe pågår, og det går som det skal
successDet er ferdig
warningDet nærmer seg en grense
dangerDet stoppet, eller gikk galt

Fargen alene sier ingenting. Den som ikke ser forskjell på grønt og rødt trenger teksten ved siden av, og den som hører siden får bare aria-label. Skriv derfor hva som skjedde, og la fargen være det som bekrefter det.

KlasseHva det er
.fs-progressStolpen. Fargen kommer fra data-color.
VariabelStandard
--fs-progress-fillvar(--fs-color-accent-fill), og data-color endrer den
--fs-progress-trackvar(--fs-color-neutral-surface)
--fs-progress-heightvar(--fs-spacing-2)
--fs-progress-radiusvar(--fs-spacing-1)

Fyllfargen bæres av color på selve stolpen, og den fylte delen leser currentColor. Grunnen er at den fylte delen har to navn, ::-webkit-progress-value i Chromium og WebKit og ::-moz-progress-bar i Gecko, og de kan ikke stå i samme selektorliste: et pseudoelement motoren ikke kjenner gjør hele regelen ugyldig. Fargen må derfor bestemmes ett sted og arves inn. <progress> har ingen tekst, så color er ledig til oppgaven, og --fs-progress-fill er det eneste du trenger å sette for å endre den.

Har brukeren bedt om mindre bevegelse, går den ubestemte stripa saktere, og den fylte delen hopper til det nye tallet framfor å gli dit. Stripa stopper ikke helt: en indikator som står stille sier ikke lenger at noe pågår.

Et eksempel. En stolpe som står under et felt skal ofte være tynnere og uten hjørner:

Se Tilpasning for hvordan variablene og laget virker.

  • Gi stolpen et navn med aria-label, eller knytt den til en synlig tekst med aria-labelledby. Uten navn melder skjermleseren et tall uten å si hva det gjelder.
  • Oppgi alltid max sammen med value. HTMLs standard er 1, så en stolpe uten max er full ved alt over 1.
  • Ikke oppdater tallet oftere enn brukeren trenger. Hver endring kan bli en opplesning, og en stolpe som teller fra 0 til 100 i steg på én blir hundre meldinger.
  • Er framdriften over, si fra med noe mer enn fargen. Flytt fokus dit resultatet kom, eller meld det i et role="status"-felt.