Hvornår skal De bruge ARIA frem for indbygget HTML
Følg ARIA's første regel: foretræk indbygget semantik
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
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
- Hvornår skal De bruge ARIA frem for indbygget HTML
- role button alert dialog og landmark
- aria-label aria-labelledby og aria-describedby
- aria-hidden og aria-live