HTML Academy · Lektion

Hvornår skal De bruge ARIA frem for indbygget HTML

Følg ARIA's første regel: foretræk indbygget semantik

Lektion 1 af 413 trin

Hvornår skal De bruge ARIA frem for indbygget HTML er en gratis HTML Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i HTML Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. HTML Academy-kurset indeholder 4 lektioner i alt.

Hvad er ARIA?

ARIA (Accessible Rich Internet Applications) er et sæt attributter, der kan føjes til HTML for at forbedre tilgængeligheden for hjælpemiddelteknologi. Det udfylder huller, når HTML's indbyggede semantik ikke er tilstrækkelig.

Den første ARIA-regel

Den vigtigste ARIA-retningslinje: Brug ikke ARIA, hvis indbygget HTML kan løse opgaven:

<!-- BAD: ARIA on a div -->
<div role="button" tabindex="0" onclick="submit()">Submit</div>

<!-- GOOD: use a real button -->
<button type="submit">Submit</button>

<!-- Native HTML elements:
  - Are keyboard accessible by default
  - Have correct semantics built in
  - Work in more contexts
  - Require less code
-->

Når indbygget HTML ikke er nok

ARIA er nødvendigt, når:

  • Tilpassede brugerfladekomponenter ikke har et tilsvarende HTML-element (faner, kombinationsbokse)
  • Det indbyggede elements rolle skal tilsidesættes
  • Opdateringer af dynamisk indhold skal annonceres
  • Komplekse relationer mellem elementer skal angives tydeligt

ARIA tilføjer ikke funktionalitet

En vigtig misforståelse: ARIA tilføjer tilgængelighedsmetadata — det tilføjer ikke funktionalitet:

<!-- Adding role="button" to a div does NOT:
  - Make it keyboard-focusable (add tabindex="0")
  - Make Enter/Space activate it (add event listeners)
  - Make it styled like a button (add CSS)
-->

<!-- You must implement ALL behavior yourself -->
<!-- Native <button> handles all this for free -->

ARIA-taksonomien

ARIA har tre kategorier af attributter:

  • Roller — definerer, hvad et element er: role="button", role="dialog"
  • Egenskaber — beskriver statiske kendetegn: aria-label, aria-required
  • Tilstande — beskriver dynamiske forhold: aria-expanded, aria-checked

Semantisk HTML kontra ARIA-ækvivalenter

De fleste HTML-elementer har allerede implicitte ARIA-roller:

<nav>   ≡  role="navigation"
<main>  ≡  role="main"
<aside> ≡  role="complementary"
<header> ≡ role="banner" (page-level)
<footer> ≡ role="contentinfo" (page-level)
<button> ≡ role="button"
<a href> ≡ role="link"
<h1-h6> ≡ role="heading"
<ul>    ≡  role="list"

Almindelige gyldige anvendelser af ARIA

Eksempler på legitim brug af ARIA:

<!-- 1. Custom dropdown (no native equivalent): -->
<div role="combobox" aria-expanded="false">...</div>

<!-- 2. Loading state announcement: -->
<div role="status" aria-live="polite">Loading results...</div>

<!-- 3. Override landmark label: -->
<nav aria-label="Primary navigation">...</nav>

<!-- 4. Associate error with input: -->
<input aria-describedby="error-msg">
<span id="error-msg" role="alert">Invalid email</span>

Ugyldig brug af ARIA

Almindelige ARIA-fejl:

<!-- BAD: ARIA role contradicts the element -->
<h2 role="button">Heading</h2>  <!-- don't turn a heading into a button -->

<!-- BAD: ARIA on an unsupported element -->
<div role="listitem">Item</div>  <!-- listitem must be inside list role -->

<!-- BAD: ARIA where HTML works fine -->
<p role="paragraph">Text</p>  <!-- p already has paragraph semantics -->

<!-- BAD: aria-label on hidden element -->
<span aria-hidden="true" aria-label="something">  <!-- contradictory -->

Landmærkeroller

ARIA-landmærkeroller hjælper brugere af skærmlæsere med at navigere mellem sidens områder:

<div role="banner">     <!-- header for the whole page -->
<div role="navigation">  <!-- major navigation -->
<div role="main">        <!-- main content -->
<div role="complementary"> <!-- aside content -->
<div role="contentinfo"> <!-- page footer -->
<div role="search">      <!-- search form -->
<div role="form">        <!-- form with label -->

<!-- These are ONLY needed if using divs instead of semantic elements -->
<!-- Prefer the native HTML elements instead -->

Test af ARIA-implementeringen

Sådan kontrollerer du, at din ARIA er korrekt:

  • Brug panelet Tilgængelighed i Chrome/Firefox DevTools
  • Lyt med VoiceOver (Mac) eller NVDA (Windows)
  • Kør udvidelsen axe DevTools
  • Kontrollér tilgængelighedstræet — afspejler det det, du forventer?

Faldgruben med aria-hidden

Almindelig fejl med aria-hidden:

<!-- BAD: aria-hidden on element that still receives focus -->
<button aria-hidden="true">Close</button>
<!-- The button is still focusable but invisible to screen readers
     Screen reader users reach it via Tab but hear nothing -->

<!-- GOOD: for focus + hide, use hidden attribute or display:none: -->
<button hidden>Close</button>  <!-- removes from both tab order and AT -->

<!-- Or: if you must keep visible: -->
<button style="display:none" aria-hidden="true">Close</button>

Hurtigt tjek

Hvad giver det dig automatisk at tilføje role="button" til en div?

Opsummering: ARIA kontra indbygget HTML

Det vigtigste om ARIA:

  • Første regel: Brug indbygget HTML, når det er muligt
  • ARIA tilføjer kun semantik — du skal selv implementere funktionaliteten
  • Tre kategorier: Roller, egenskaber, tilstande
  • Landmærkeroller hjælper skærmlæsernavigation
  • Test med panelet Tilgængelighed i DevTools og en skærmlæser
Gratis at komme i gang

Lær HTML med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
40
Lektioner
159

Ofte stillede spørgsmål

Er lektionen “Hvornår skal De bruge ARIA frem for indbygget HTML” gratis?

Ja — alle 3 lektioner i læringssporet HTML Academy, inklusive “Hvornår skal De bruge ARIA frem for indbygget HTML”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. HTML Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Hvornår skal De bruge ARIA frem for indbygget HTML”?

Følg ARIA's første regel: foretræk indbygget semantik Du øver dig i HTML Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på HTML Academy?

Der kræves ingen tidligere erfaring. HTML Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Hvornår skal De bruge ARIA frem for indbygget HTML”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne HTML Academy-lektion?

Ja. Alle HTML Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Hvornår skal De bruge ARIA frem for indbygget HTML
  2. role button alert dialog og landmark
  3. aria-label aria-labelledby og aria-describedby
  4. aria-hidden og aria-live
← Tilbage til HTML Academy