Gå til innholdet

Table

Klassen settes på et ekte <table>. Det er <th> med scope som gjør at skjermlesere kan si «Beløp, 1 240 kroner» når brukeren står i en celle. Bygger du tabellen av <div>-er, finnes ikke den koblingen, og tallene står uten betydning.

import "@fristil/designsystem/tokens.css"
import "@fristil/designsystem/table.css"
AttributtEffekt
data-variant="striped"Dempet flate på annenhver rad
data-hoverableMarkerer raden under musa. Bruk bare når raden kan trykkes på.
data-align="end" på en celleHøyrestiller, for beløp og antall

Tall står i tabular-nums, så sifrene får lik bredde og kolonnen kan leses nedover.

En tabell som er bredere enn skjermen må kunne rulles sidelengs, og det området må kunne nås med tastatur:

<div class="fs-table-scroll" tabindex="0" role="region" aria-label="Fakturaer">
<table class="fs-table"></table>
</div>

tabindex="0" er ikke valgfritt. Uten det kommer ingen som navigerer med tastatur til innholdet som ligger utenfor kanten. role="region" med en tekst gjør at skjermleseren sier hva området inneholder når fokus havner der.

import { fs } from "@fristil/designsystem"
const tabell = document.querySelector<HTMLTableElement>("#fakturaer")
fs.setAttributes(tabell, fs.table({ variant: "striped", hoverable: true }))

fs.table.scroll gir klassen på beholderen rundt. Se Typesikker bruk.

KlasseHva det er
.fs-tableSelve tabellen. Varianten kommer fra data-variant.
.fs-table-scrollBeholderen som lar en bred tabell rulles
VariabelStandard
--fs-table-cell-paddingvar(--size-2) var(--size-3)

Se Tilpasning for hvordan variablene og laget virker.

  • Hver kolonneoverskrift skal være <th scope="col">, og raden sin egen nøkkel <th scope="row">. Da vet skjermleseren hvilken kolonne og rad en celle hører til.
  • Gi tabellen en <caption>. Den sier hva tabellen inneholder, og er det første som leses opp.
  • Slå aldri sammen celler for å få et oppsett til å se riktig ut. Sammenslåtte celler gjør navigasjonen uforutsigbar.
  • Skal rader kunne trykkes på, legg lenken i en celle. En hel rad som er klikkbar kan ikke nås med tastatur.