HTML Academy · Lektion

När ARIA ska användas i stället för inbyggd HTML

Följ ARIA:s första regel: föredra inbyggd semantik

Lektion 1 av 413 steg

När ARIA ska användas i stället för inbyggd HTML är en gratis lektion i HTML Academy på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för HTML Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i HTML Academy innehåller totalt 4 lektioner.

Vad är ARIA?

ARIA (Accessible Rich Internet Applications) är en uppsättning attribut som kan läggas till i HTML för att förbättra tillgängligheten för hjälpmedel. ARIA fyller luckor när den inbyggda HTML-semantiken inte räcker till.

ARIA:s första regel

Den viktigaste riktlinjen för ARIA: använd inte ARIA om inbyggd HTML kan göra jobbet:

<!-- 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 inbyggd HTML inte räcker till

ARIA behövs när:

  • Anpassade UI-komponenter saknar en motsvarighet i HTML (flikar, kombinationsfält)
  • Det inbyggda elementets roll behöver åsidosättas
  • Uppdateringar av dynamiskt innehåll behöver meddelas
  • Komplexa relationer mellan element behöver anges explicit

ARIA lägger inte till beteende

Ett viktigt missförstånd: ARIA lägger till tillgänglighetsmetadata — det lägger inte till någon 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:s taxonomi

ARIA har tre kategorier av attribut:

  • Roller — definierar vad ett element är: role="button", role="dialog"
  • Egenskaper — beskriver statiska kännetecken: aria-label, aria-required
  • Tillstånd — beskriver dynamiska förhållanden: aria-expanded, aria-checked

Semantisk HTML jämfört med ARIA-motsvarigheter

De flesta HTML-element har redan implicita 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"

Vanliga giltiga användningsområden för ARIA

Exempel på legitim användning av 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>

Ogiltig användning av ARIA

Vanliga misstag med ARIA:

<!-- 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ärkesroller

ARIA:s landmärkesroller hjälper skärmläsaranvändare att navigera mellan sidans områden:

<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 -->

Testa ARIA-implementationen

Så kontrollerar ni att ARIA är korrekt:

  • Använd panelen Accessibility i Chrome/Firefox DevTools
  • Lyssna med VoiceOver (Mac) eller NVDA (Windows)
  • Kör tillägget axe DevTools
  • Kontrollera tillgänglighetsträdet — motsvarar det era förväntningar?

Fallgropen aria-hidden

Vanligt misstag 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>

Snabb kontroll

Vad får ni automatiskt genom att lägga till role="button" på en div?

Sammanfattning: ARIA jämfört med inbyggd HTML

Det viktigaste om ARIA:

  • Första regeln: använd inbyggd HTML när det är möjligt
  • ARIA lägger endast till semantik — ni måste implementera beteendet
  • Tre kategorier: roller, egenskaper, tillstånd
  • Landmärkesroller hjälper skärmläsaranvändare att navigera
  • Testa med DevTools-panelen Accessibility och en skärmläsare
Gratis att börja

Lär dig HTML med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
40
Lektioner
159

Vanliga frågor

Är lektionen ”När ARIA ska användas i stället för inbyggd HTML” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen HTML Academy, inklusive ”När ARIA ska användas i stället för inbyggd HTML”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i HTML Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”När ARIA ska användas i stället för inbyggd HTML”?

Följ ARIA:s första regel: föredra inbyggd semantik Ni övar på HTML Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig HTML Academy?

Du behöver inga förkunskaper. Utbildningen i HTML Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”När ARIA ska användas i stället för inbyggd HTML”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här HTML Academy-lektionen?

Ja. Varje HTML Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. När ARIA ska användas i stället för inbyggd HTML
  2. role button alert dialog och landmärke
  3. aria-label aria-labelledby och aria-describedby
  4. aria-hidden och aria-live
← Tillbaka till HTML Academy