När ARIA ska användas i stället för inbyggd HTML
Följ ARIA:s första regel: föredra inbyggd semantik
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
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
- När ARIA ska användas i stället för inbyggd HTML
- role button alert dialog och landmärke
- aria-label aria-labelledby och aria-describedby
- aria-hidden och aria-live