Toegankelijke webpagina's maken

Leer webpagina's maken die voor iedereen werken: met een toetsenbord, met een schermlezer en wanneer je inzoomt. Begin met semantische HTML en paginastructuur, schrijf bruikbare tekstalternatieven voor afbeeldingen en media en zorg dat elk bedieningselement bereikbaar is en een zichtbare focus heeft. Controleer het kleurcontrast, vertrouw niet alleen op kleur en houd lay-outs bruikbaar bij 400% zoom. Maak formulieren met duidelijke labels, toelichtingen en foutmeldingen, voeg alleen ARIA toe waar HTML geen ingebouwde oplossing biedt en test je pagina's met geautomatiseerde hulpmiddelen en met de hand. Het doel is steeds WCAG 2.2 op niveau AA.

BeginnerLes 7 van 8 in Cursus HTML en CSS: responsieve, toegankelijke websites bouwen

Wat je leert

  1. Gebruik HTML-elementen op basis van hun betekenis, zodat browsers, schermlezers en toetsenborden met je pagina's kunnen werken, en begrijp wat hulptechnologieën uit je code ontvangen.
    • Leg uit hoe hulptechnologieën een webpagina lezen
      Beschrijf wie afhankelijk zijn van toegankelijke code, hoe de browser HTML omzet in een toegankelijkheidsboom en hoe WCAG 2.2 niveau AA een toetsbaar doel stelt.
    • Geef elke pagina een duidelijke structuur waarin je gemakkelijk kunt navigeren
      Stel de paginataal en paginatitel in, markeer herkenningspunten, koppen en lijsten en zorg voor een betekenisvolle bronvolgorde.
    • Kies standaard HTML-elementen voor links, knoppen, bedieningselementen en tabellen
      Kies links voor navigatie en knoppen voor acties, schrijf begrijpelijke linktekst, geef de voorkeur aan ingebouwde bedieningselementen en markeer gegevenstabellen zo dat hun kopcellen worden aangekondigd.
  2. Geef afbeeldingen, pictogrammen, grafische elementen, audio en video een tekstequivalent met hetzelfde doel en verberg zuiver decoratieve inhoud voor hulptechnologieën.
    • Schrijf alternatieve tekst die bij het doel van elke afbeelding past
      Bepaal of een afbeelding informatief, decoratief, functioneel, een afbeelding van tekst of complex is en schrijf de bijpassende alt-tekst.
    • Geef pictogrammen en SVG-afbeeldingen een naam en bied tekstalternatieven voor media
      Geef pictogramknoppen en inline-SVG een toegankelijke naam, verberg decoratieve grafische elementen en voeg ondertiteling voor doven en slechthorenden, transcripten en audiodescriptie toe aan audio en video.
  3. Zorg dat mensen elk bedieningselement in een logische volgorde met het toetsenbord kunnen bereiken en gebruiken, altijd kunnen zien waar de focus is, herhaalde inhoud kunnen overslaan en hun plaats behouden wanneer de pagina verandert.
    • Bedien een pagina met het toetsenbord in een logische focusvolgorde
      Gebruik de standaardtoetsen, weet welke elementen focus krijgen, gebruik tabindex correct en houd de focusvolgorde logisch, zonder vallen en onzichtbare stops.
    • Maak de focus duidelijk zichtbaar en zorg dat bedieningselementen gemakkelijk te raken zijn
      Zorg voor een zichtbare focusindicator met hoog contrast, voorkom dat het element met focus wordt bedekt en geef aanwijzerdoelen voldoende grootte of tussenruimte.
    • Voeg skiplinks toe en beheer de focus wanneer inhoud verandert
      Laat toetsenbordgebruikers herhaalde blokken overslaan, verplaats de focus verstandig wanneer inhoud opent, sluit of verdwijnt en vermijd veranderingen waar de gebruiker niet om heeft gevraagd.
  4. Kies kleurencombinaties met voldoende contrast, laat betekenis nooit alleen van kleur afhangen en houd pagina's bruikbaar wanneer mensen inzoomen of tekst vergroten.
    • Meet het kleurcontrast en voldoe aan de contrasteisen
      Bereken en controleer contrastverhoudingen voor tekst en interfaceonderdelen en pas de WCAG AA-drempels en hun uitzonderingen toe.
    • Gebruik kleur samen met andere aanwijzingen
      Zorg dat links, fouten, verplichte velden, grafieken en statusindicatoren niet alleen van kleur afhangen.
    • Houd pagina's bruikbaar wanneer je inzoomt of tekst vergroot
      Gebruik relatieve eenheden en flexibele lay-outs zodat pagina's bij 200% tekstgrootte, 400% zoom en aangepaste tekstafstand geen inhoud verliezen.
  5. Geef elk bedieningselement een label, groepeer samenhangende elementen, geef instructies en informatie voor automatisch aanvullen en meld fouten en statusberichten zodat iedereen een formulier kan invullen.
    • Geef elk formulieronderdeel een label en groepeer samenhangende onderdelen
      Koppel zichtbare labels aan invoervelden, groepeer keuzerondjes en selectievakjes, geef knoppen een naam en kies invoertypen die bij de gegevens passen.
    • Geef instructies, markeer verplichte velden en ondersteun automatisch invullen
      Koppel toelichtingen aan velden, laat zien welke velden verplicht zijn, voeg autocomplete-tokens toe en vermijd stappen waarbij mensen informatie opnieuw moeten typen of onthouden.
    • Geef fouten en statusberichten duidelijk weer
      Wijs invoerfouten aan en leg ze uit in tekst, koppel ze aan hun velden en kondig berichten aan die verschijnen zonder de focus te verplaatsen.
  6. Voeg alleen ARIA toe waar HTML geen ingebouwde oplossing biedt, houd de toestanden ervan synchroon en controleer pagina's met geautomatiseerde hulpmiddelen en handmatig met een toetsenbord, zoom en een schermlezer.
    • Pas de regels voor het gebruik van ARIA toe
      Leg uit wat ARIA wel en niet verandert, geef de voorkeur aan ingebouwde HTML, vermijd schadelijk gebruik van ARIA en weet hoe de toegankelijke naam van een element wordt gekozen.
    • Maak veranderende toestanden kenbaar met ARIA
      Gebruik aria-expanded, aria-current, aria-pressed en aria-hidden correct en houd elke toestand synchroon met wat de pagina toont.
    • Voer geautomatiseerde toegankelijkheidscontroles uit en interpreteer de resultaten
      Gebruik geautomatiseerde controles om problemen te vinden die software kan herkennen, begrijp wat ze niet kunnen beoordelen en zet hun rapporten om in oplossingen met prioriteit.
    • Test handmatig met een toetsenbord, zoom en een schermlezer
      Doorloop een pagina met alleen het toetsenbord, controleer zoom en herschikking, probeer de basisfuncties van een schermlezer, inspecteer de toegankelijkheidsboom en leg je bevindingen vast.

Toegankelijke webpagina's: uitleg

6 hoofdstukken

1

Structureer pagina's met semantische HTML

De HTML van een pagina geeft browsers en hulptechnologieën de informatie die ze nodig hebben om de pagina toe te lichten en te bedienen. Begin met begrijpen hoe de toegankelijkheidsboom werkt en bouw daarna een paginaoverzicht waarin mensen met herkenningspunten, koppen en lijsten kunnen navigeren. Kies links, knoppen en tabelelementen op basis van hun doel en laat CSS het uiterlijk bepalen. Deze keuzes geven elke latere functie een betrouwbare structuur.

1.1 Leg uit hoe hulptechnologieën een webpagina lezen

Een toegankelijke pagina laat mensen informatie verkrijgen en taken uitvoeren met de hulpmiddelen die ze gebruiken. Dat kunnen een toetsenbord, een schermlezer, een schermvergroter of spraakbediening zijn. Een pagina kan er voltooid uitzien terwijl de code deze gebruikers nog steeds tegenhoudt.

Wat hulptechnologie ontvangt

De browser leest HTML in de DOM, het model van het document. Daaruit leidt de browser een toegankelijkheidsboom af die betekenisvolle objecten beschrijft voor hulptechnologieën. Een bedieningselement heeft een rol, een naam en relevante toestanden of eigenschappen nodig. Een selectievakje kan bijvoorbeeld de rol “selectievakje”, de naam “Aanbiedingen per e-mail” en de toestand “aangevinkt” hebben.

Een schermlezer spreekt inhoud uit of stuurt die naar een brailleleesregel. NVDA en JAWS werken op Windows; Narrator is ingebouwd in Windows, VoiceOver in macOS en iOS en TalkBack in Android. Schermlezers kunnen langs koppen, links en bedieningselementen navigeren zonder elke regel te lezen. Sommige kunnen ook lettertype- of kleurinstellingen melden. Schermvergroters tonen de vergrote visuele pagina, dus ook zichtbare duidelijkheid is van belang.

Met spraakbediening kan iemand de naam van een bedieningselement zeggen, zoals “klik op Zoeken”. Schakelapparaten kunnen opdrachten als van een toetsenbord versturen. Toetsenbordondersteuning en nauwkeurige namen helpen daarom verschillende groepen gebruikers, niet alleen mensen die naar spraak luisteren.

Begin met het juiste element

Vergelijk deze twee manieren om een bedieningselement voor opslaan te maken:

<button type="button">Save</button>
<div class="btn" onclick="save()">Save</div>

De knop maakt zijn rol en naam al beschikbaar. De knop krijgt focus via Tab en reageert op Enter en de spatiebalk. CSS kan de tweede regel er hetzelfde uit laten zien, maar een div heeft niets van dat knopgedrag. Een schermlezer kan in leesmodus mogelijk de klikafhandeling activeren, maar kondigt het element niet aan als knop. Iemand die met Tab navigeert, kan het niet bereiken.

Semantische HTML betekent dat je een element kiest op basis van wat de inhoud of het bedieningselement betekent. Gebruik CSS om het uiterlijk te bepalen. Dit geeft de browser een goed uitgangspunt en voorkomt dat je ingebouwd gedrag met een script moet nabouwen.

Ken het doel

Het W3C publiceert de Web Content Accessibility Guidelines, of WCAG. De succescriteria zijn toetsbare eisen, elk aangeduid met een nummer, een naam en een niveau. Zo is 1.4.3 Contrast (minimum) niveau AA. WCAG 2.2 werd in oktober 2023 een aanbeveling en is in december 2024 bijgewerkt.

Om aan niveau AA te voldoen, moet je voldoen aan elk criterium van niveau A en niveau AA. Een paar AA-controles halen is niet genoeg. Niveau AAA voegt verdere eisen toe. WCAG 2.2 voegt negen criteria toe aan 2.1, waarvan zes op A of AA, en verwijdert het verouderde criterium 4.1.1 Parsen.

Toegankelijkheid omvat ook leesbare vergrote tekst, ondertiteling voor dove en slechthorende mensen, duidelijke instructies en nuttige foutmeldingen. Door deze voorzieningen vanaf het begin in de pagina op te nemen, voorkom je dat je ongeschikte HTML moet vervangen nadat de lay-out klaar is.

Belangrijkste punten

  • Kies HTML-elementen op basis van hun betekenis en geef ze daarna vorm met CSS.
  • De toegankelijkheidsboom maakt rollen, namen, toestanden en eigenschappen beschikbaar.
  • Ingebouwde knoppen bieden toetsenbordgedrag dat een vormgegeven div mist.
  • WCAG 2.2 niveau AA vereist alle succescriteria van niveau A en AA.

1.2 Geef elke pagina een duidelijke structuur waarin je gemakkelijk kunt navigeren

Een bruikbare paginastructuur geeft mensen verschillende manieren om hun plaats te vinden. Een beschrijvende titel duidt de pagina aan, herkenningspunten duiden de gebieden aan en koppen tonen het overzicht. Deze onderdelen hebben echte HTML-betekenis nodig, ook als het visuele ontwerp er al duidelijk uitziet.

Duid de pagina en de taal aan

Stel de hoofdtaal in op het hoofdelement, bijvoorbeeld <html lang="en-US">. Schermlezers gebruiken die om uitspraakregels te kiezen. Markeer een taalwisseling binnen de pagina op het betreffende element: <span lang="fr">bon appétit</span>. Dit ondersteunt 3.1.1 Taal van de pagina (A) en 3.1.2 Taal van onderdelen (AA).

Geef elke pagina een unieke, beschrijvende <title>. “Verjaardagstaart bestellen – Bakkerij Groen Blad” is bruikbaarder in tabbladen, bladwijzers en aankondigingen van schermlezers dan “Bakkerij Groen Blad – Pagina 4”. Zet het specifieke onderwerp voorop, zodat gebruikers vergelijkbare tabbladen snel kunnen onderscheiden.

Verdeel de pagina in gebieden

Gebruik <main> voor de hoofdinhoud, <nav> voor navigatie en <aside> voor ondersteunende inhoud. Een <header> op paginaniveau levert het herkenningspunt banner en een <footer> op paginaniveau levert inhoudsinformatie. Header- en footer-elementen die binnen sectiegebieden zijn genest, worden niet die herkenningspunten op paginaniveau.

Gebruik één zichtbare <main>. Als er twee navigatiegebieden zijn, onderscheid ze dan met namen zoals <nav aria-label="Main"> en <nav aria-label="Breadcrumb">. De rol zegt al “navigatie”, dus het label kan kort blijven. Een <section> of <form> wordt alleen een herkenningspunt als het element een toegankelijke naam heeft.

Maak een overzicht voordat je lettergroottes kiest

Voor de bestelpagina van de bakkerij kan een duidelijk overzicht er zo uitzien:

<h1>Order a birthday cake</h1>
<h2>Choose a size</h2>
<h2>Choose a flavor</h2>
<h3>Chocolate</h3>
<h3>Lemon</h3>
<h2>Pickup or delivery</h2>

Gebruik één h1 voor het hoofdonderwerp, hoofdsecties op h2-niveau en hun onderdelen op h3-niveau. Sla geen niveaus over wanneer je afdaalt. Kies kopniveaus voor de structuur; pas hun grootte aan met CSS. Een vetgedrukte alinea komt niet in de koppenlijst van de schermlezer. Omgekeerd voegt een gewone inleiding in h2 een sectie toe die de inhoud niet heeft.

Behoud groepering en leesvolgorde

Gebruik <ul> voor ongeordende items, <ol> voor geordende stappen en <dl> voor paren van term en beschrijving. Schermlezers kunnen de grootte van een lijst aankondigen, zodat gebruikers kunnen inschatten hoeveel er volgt. Navigatielinks kunnen in een ul binnen nav staan. Als je in Safari opsommingstekens verwijdert met list-style: none, kondigt VoiceOver de lijst mogelijk niet meer aan; role="list" op die lijst herstelt dit.

Schrijf de HTML in een betekenisvolle leesvolgorde. Flex order, een omgekeerde flexrichting, gridplaatsing en absolute positionering veranderen wat mensen zien zonder de DOM-volgorde te veranderen. Een rij die visueel met “Aanmelden” begint, maar dat pas als laatste bereikt met Tab, is moeilijker te volgen. Verbeter de bronvolgorde voordat je de lay-out maakt.

Werk een paginabasis uit

Een bakkerijwebsite heeft een hoofdmenu en een tweede verzameling kruimelpadlinks. Geef de gebieden verschillende namen en houd beide verzamelingen links beschikbaar:

<nav aria-label="Main">
  <ul><li><a href="/bread">Bread</a></li></ul>
</nav>
<nav aria-label="Breadcrumb">
  <ol><li><a href="/">Home</a></li></ol>
</nav>
<main>
  <h1>Order a loaf</h1>
  <h2>Choose your bread</h2>
</main>

Inspecteer de lijst met herkenningspunten: Main en Breadcrumb duiden verschillende navigatiedoelen aan, gevolgd door de hoofdinhoud. Inspecteer daarna de koppenlijst: die moet het paginaonderwerp en de eerste sectie tonen. Deze twee lijsten bieden verschillende routes door hetzelfde document; geen van beide hangt af van de kleuren van het menu of de lettergrootte van de kop.

Belangrijkste punten

  • Stel de paginataal in en markeer passages in een andere taal.
  • Geef elke pagina een specifieke titel en één zichtbaar hoofdinhoudsgebied.
  • Gebruik echte kopniveaus om het overzicht weer te geven.
  • Gebruik lijstelementen voor groepen items en geordende stappen.
  • Zorg dat de visuele volgorde overeenkomt met een betekenisvolle bronvolgorde.

Het element van een bedieningselement vertelt gebruikers wat ze kunnen verwachten. Een link belooft een bestemming; een knop belooft een actie. Ingebouwde bedieningselementen en tabelelementen bieden ook relaties die moeilijk na te maken zijn met vormgegeven generieke boxen.

Kies tussen navigatie en actie
DoelHTMLStandaardactivering
Naar een andere pagina, een bestand of een plek op een pagina gaan<a href="/classes">Baking classes</a>Enter
Een actie uitvoeren op de huidige pagina<button type="button">Show filters</button>Enter of spatiebalk

Een anker zonder href is geen gewone link die met het toetsenbord focus kan krijgen. Een anker met href="#" en een klikafhandeling die een menu opent, kondigt navigatie aan terwijl het een actie uitvoert. Gebruik voor dat menu een knop. Geef knoppen binnen een formulier die het formulier niet verzenden type="button"; anders kunnen ze het formulier door hun standaardgedrag verzenden.

Maak bestemmingen duidelijk

Een schermlezer kan de links op de pagina in een lijst verzamelen. Herhaalde links met “Lees meer” zijn daarin moeilijk te onderscheiden. “Lees over zuurdesemcursussen” noemt de bestemming direct. WCAG 2.4.4 Linkdoel (in context) (A) staat toe dat de nabije context een link verduidelijkt, maar betekenisvolle linktekst werkt ook wanneer die op zichzelf wordt gehoord.

Vertel gebruikers in de linktekst over een download of nieuw tabblad: “Prijslijst (PDF, 2 MB)” of “Boekingsformulier (opent in een nieuw tabblad)”. Een nieuw tabblad verandert hoe de terugknop werkt. Gebruik waar mogelijk een beschrijving in plaats van een lange onbewerkte URL.

Elke link en knop heeft een toegankelijke naam nodig. Een winkelwagenlink met alleen een afbeelding heeft tekst nodig die de bestemming aangeeft; een afbeelding zonder alternatief kan een link zonder naam laten of alleen met een bestandsnaam aanduiden. Een naam geven is even noodzakelijk als de juiste rol kiezen.

Behoud ingebouwd gedrag

Gebruik ingebouwde selectievakjes, keuzerondjes en select-elementen. Die bieden toetsenbordbediening en aangekondigde toestanden. Een eenvoudige uitklapbediening kan met alleen HTML:

<details>
  <summary>Delivery options</summary>
  <p>We deliver within 10 km.</p>
</details>

Het summary-element krijgt toetsenbordfocus en de uitklapbediening maakt bekend of die open of gesloten is. Bij een zelfgebouwde rij met een driehoekspictogram moet je die functies afzonderlijk implementeren.

Koppel tabelgegevens aan hun kopcellen

Gebruik tabellen voor gegevens met relaties tussen rijen en kolommen. Een tabelbijschrift geeft de gegevensverzameling een naam; th duidt kopcellen aan; scope vertelt de browser welke cellen een kopcel beschrijft.

<table>
  <caption>Shop opening hours</caption>
  <tr><th scope="col">Day</th><th scope="col">Opens</th></tr>
  <tr><th scope="row">Saturday</th><td>08:00</td></tr>
</table>

Iemand die naar de cel met de tijd gaat, kan de bijbehorende dag en kolomkop horen. Een CSS-grid van div-elementen verliest die ingebouwde relaties. Gebruik flexbox of grid voor de pagina-indeling; een indelingstabel kan misleidende tabelnavigatie opleveren waar geen echte gegevensrelatie bestaat.

Belangrijkste punten

  • Gebruik links voor bestemmingen en knoppen voor acties.
  • Geef links een duidelijke naam en vermeld downloads of nieuwe tabbladen.
  • Geef de voorkeur aan ingebouwde bedieningselementen en uitklapbedieningen vanwege hun ingebouwde gedrag.
  • Gebruik tabelbijschriften, kopcellen en scope in gegevenstabellen.
  • Gebruik CSS voor de pagina-indeling.
2

Bied tekstalternatieven voor niet-tekstuele inhoud

Afbeeldingen, pictogrammen en media kunnen informatie bevatten die ontbreekt in de gewone tekst van de pagina. Kies elk alternatief op basis van het doel: een productfoto heeft andere woorden nodig dan een zoekpictogram en een video heeft meer nodig dan een afbeeldingsbeschrijving. Leer waar korte alternatieven thuishoren, wanneer een langere uitleg nodig is en hoe ondertiteling voor doven en slechthorenden, transcripten en audiodescriptie verschillende manieren van mediagebruik ondersteunen.

2.1 Schrijf alternatieve tekst die bij het doel van elke afbeelding past

Alternatieve tekst geeft de nuttige informatie of functie van een afbeelding door aan iemand die de afbeelding niet kan zien. Bepaal wat de afbeelding op deze specifieke pagina bijdraagt voordat je het uiterlijk beschrijft. Dezelfde foto kan in verschillende contexten andere tekst nodig hebben.

Kies op basis van het doel

Voor een informatieve productfoto beschrijft alt="Round sourdough loaf with a dark, cracked crust" wat een koper moet weten. Op een pagina over bakfouten kan juist een verbrande korst het belangrijkste kenmerk zijn. Stel je voor dat je de pagina via de telefoon voorleest: neem de informatie op die de luisteraar anders zou missen.

Gebruik alt="" voor een afbeelding die alleen decoratie toevoegt. Een leeg alternatief vertelt schermlezers dat ze de afbeelding moeten overslaan. Het attribuut weglaten is iets anders: een schermlezer kan een bestandsnaam aankondigen, zoals “IMG underscore 4032 punt jpg”. Een zuiver decoratieve achtergrond kan ook in CSS worden geplaatst.

Noem een functie, geen vorm

Wanneer een afbeelding de enige inhoud van een link of knop is, levert het alternatief de naam van het bedieningselement. Een link naar de homepagina kan zo zijn:

<a href="/">
  <img src="logo.svg" alt="Green Leaf Bakery home">
</a>

Gebruik voor een zoekknop “Zoeken”, niet “Vergrootglas”. De gebruiker moet weten wat er gebeurt als die op het bedieningselement drukt. Als een productlink al de zichtbare woorden “Roggebrood” bevat, kan een foto in dezelfde link alt="" gebruiken, zodat de naam van de link niet wordt herhaald.

Behandel tekst en complexe afbeeldingen

Een afbeelding van tekst heeft dezelfde woorden nodig in het alternatief. Een reclamebanner met “Zomeruitverkoop: 20% korting op al het brood” heeft die woorden nodig, niet “Reclamebanner”. Gebruik waar mogelijk echte HTML-tekst die met CSS is vormgegeven. Die kan worden vergroot of verkleind, vertaald en herschikt; WCAG 1.4.5 Afbeeldingen van tekst (AA) vereist echte tekst wanneer de technologie dat toelaat, met uitzonderingen zoals logo's.

Een grafiek, diagram of kaart bevat vaak te veel informatie voor een kort alternatief. Geef een korte aanduiding en zet daarna een uitgebreidere beschrijving in de buurt. Zo duidt alt="Bar chart of monthly website visitors, January to June" de afbeelding aan. Tekst in de buurt kan uitleggen dat het aantal bezoekers steeg van 1.200 naar 3.000, terwijl een gegevenstabel afzonderlijke waarden biedt wanneer die nodig zijn. Een <figure> met <figcaption> kan de afbeelding en de uitleg groeperen.

Kies nuttige details

Houd gewone alternatieve tekst bij een beknopte woordgroep of zin. Schermlezers duiden een afbeelding al aan, dus beginnen met “Afbeelding van” voegt meestal geen nuttige inhoud toe. Verwijder herhaling van aangrenzende tekst en zoekwoorden die niet helpen om de pagina te begrijpen.

WCAG 1.1.1 Niet-tekstuele content (A) vereist een gelijkwaardig doel, geen beschrijving van elk zichtbaar detail. Het title-attribuut is geen betrouwbare vervanging: het wordt niet consequent aangekondigd of beschikbaar gemaakt bij gebruik van toetsenbord en aanraakbediening. Zet het alternatief van een afbeelding in alt en houd een eventuele langere uitleg op de pagina zelf.

Belangrijkste punten

  • Schrijf alternatieve tekst voor het doel van de afbeelding in de context van de pagina.
  • Gebruik alt="" voor decoratie; laat het attribuut niet weg.
  • Functionele afbeeldingen noemen de actie of bestemming.
  • Gebruik tekst of gegevens in de buurt voor complexe afbeeldingen.
  • Geef de voorkeur aan echte HTML-tekst boven afbeeldingen van tekst.

2.2 Geef pictogrammen en SVG-afbeeldingen een naam en bied tekstalternatieven voor media

Een pictogram, een diagram en een video hebben verschillende soorten alternatieven nodig. Bepaal eerst welke informatie of actie elk bijdraagt. Zet het equivalent daarna op een plek waar zowel de browser als de gebruiker van de pagina het kan vinden.

Geef het bedieningselement met het pictogram een naam

Zichtbare tekst naast een pictogram is meestal het duidelijkst. Als een knop alleen een pictogram moet bevatten, zorg dan voor visueel verborgen tekst of een label op de knop:

<button type="button" aria-label="Close">✕</button>

Staat een pictogram naast zichtbare knoptekst, verberg het decoratieve pictogram dan met aria-hidden="true". Verberg niet de hele knop. Een gewone span of div heeft een generieke rol waarbij naamgeving verboden is; aria-label daarop plaatsen is geen betrouwbare manier om een pictogram een naam te geven.

Visueel verborgen tekst blijft beschikbaar voor schermlezers. Een herbruikbare CSS-klasse kan absolute positionering, een breedte en hoogte van 1 px, verborgen overlopende inhoud, clip-path: inset(50%) en white-space: nowrap gebruiken. Anders dan display: none of visibility: hidden houdt die de tekst in de toegankelijkheidsboom.

Gebruik voor betekenisvolle inline-SVG role="img" en een naam, bijvoorbeeld aria-labelledby="rating-title" dat verwijst naar <title id="rating-title">Rated 4 out of 5 stars</title> binnen de SVG. Decoratieve SVG gebruikt aria-hidden="true". Een SVG die via img wordt geladen, krijgt net als andere afbeeldingen het alternatief uit alt. Houd betekenisvolle waarschuwingen in HTML; CSS-achtergronden en gegenereerde inhoud zijn onbetrouwbare plekken voor essentiële informatie.

Kies het passende media-alternatief
InhoudNodig alternatief
Opname met alleen audioTranscript
Vooraf opgenomen video met geluidOndertiteling voor doven en slechthorenden; op AA-niveau audiodescriptie voor belangrijke visuele informatie die niet wordt uitgesproken
Livevideo met geluidLive ondertiteling voor doven en slechthorenden op AA-niveau

Ondertiteling voor doven en slechthorenden synchroniseert spraak, belangrijke geluiden en aanduiding van sprekers met de video. Dialoogondertiteling geeft de dialoog weer of vertaalt die voor mensen die kunnen horen maar hulp nodig hebben om de taal te begrijpen. Een transcript is een afzonderlijke tekstuele weergave; die volgt de afspeeltijd niet.

<video controls src="bread.mp4">
  <track kind="captions" src="bread-en.vtt"
         srclang="en" label="English">
</video>

Het WebVTT-bestand bevat getimede tekstsegmenten, zoals 00:00:01.000 --> 00:00:04.000, gevolgd door ondertitelingstekst. Controleer automatische ondertiteling vóór publicatie op namen, vaktermen en interpunctie.

Als een demonstratie zonder woorden een oveninstelling toont, brengt ondertiteling van de spraak die informatie niet over. Audiodescriptie beschrijft belangrijke visuele informatie tijdens pauzes of in een beschreven versie. Een volledig tekstalternatief met de visuele informatie is een mogelijkheid op niveau A; vooraf opgenomen video heeft volgens 1.2.5 op AA-niveau audiodescriptie nodig.

Houd het afspelen bruikbaar

Gebruik de ingebouwde controls op audio en video en geef ingesloten frames een beschrijvende title, zoals “Kaart van onze winkellocatie”. Vermijd automatisch afspelend geluid. Audio die automatisch begint en langer dan 3 seconden duurt, heeft een pauze-, stop- of volumeregeling nodig die onafhankelijk is van het systeemvolume.

Koppel de verborgen naam en de getimede tekst

Houd voor een compacte verwijderknop de woorden in het document:

<button type="button">
  <img src="trash.svg" alt="">
  <span class="visually-hidden">Delete item</span>
</button>

De afbeelding wordt overgeslagen omdat de tekst de actie al aangeeft. Pas de verborgen-tekstklasse toe zonder die tekst uit de toegankelijkheidsboom te verwijderen:

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

Een ondertitelingsbestand koppelt woorden daarentegen aan de afspeeltijd. Een klein WebVTT-voorbeeld is:

WEBVTT

00:00:01.000 --> 00:00:03.000
[Mixer whirring]

00:00:03.000 --> 00:00:06.000
Today we bake rye bread.

Het eerste tekstsegment brengt een relevant geluid zonder dialoog over. Het tweede brengt spraak over tijdens het eigen tijdsinterval. Bekijk de video met het tekstspoor ingeschakeld en controleer of elk tekstsegment verschijnt wanneer het bijbehorende geluid klinkt.

Belangrijkste punten

  • Geef bedieningselementen met pictogrammen een naam op het bedieningselement zelf.
  • Visueel verborgen tekst blijft beschikbaar voor hulptechnologieën.
  • Geef betekenisvolle SVG-afbeeldingen een rol en naam.
  • Ondertiteling voor doven en slechthorenden bevat spraak en belangrijke geluiden; transcripten ondersteunen opnames met alleen audio.
  • Audiodescriptie geeft belangrijke visuele informatie die ontbreekt op het geluidsspoor van een video.
  • Houd afspeelbediening beschikbaar en geef ingesloten frames een naam.
3

Maak elke functie bedienbaar met het toetsenbord

Toetsenbordbediening vraagt om een duidelijke route door de pagina en een zichtbare huidige positie. Werk met ingebouwde bedieningselementen, houd de volgorde betekenisvol en voorkom dat de focus op onzichtbare inhoud terechtkomt. Voeg mogelijkheden toe om herhaalde navigatie over te slaan en zorg dat gebruikers hun plaats behouden wanneer een dialoogvenster opent of een item verdwijnt. Controleer de grootte van bedieningselementen en de zichtbaarheid van de focus, zodat dezelfde interface op verschillende manieren gemakkelijker te bedienen is.

3.1 Bedien een pagina met het toetsenbord in een logische focusvolgorde

Toetsenbordgebruikers hebben een route door de hele taak nodig: een bedieningselement bereiken, herkennen, bedienen en verdergaan. Standaard HTML-bedieningselementen ondersteunen deze route al. Problemen ontstaan vaak wanneer vormgeving of zelfgebouwde bedieningselementen het gedrag van de browser verstoren.

Gebruik de verwachte toetsen

Tab gaat vooruit langs interactieve elementen; Shift+Tab gaat terug. Enter volgt links en activeert knoppen. De spatiebalk activeert knoppen en schakelt selectievakjes in of uit. In een groep keuzerondjes ga je met Tab de groep in of uit en ga je met de pijltoetsen tussen opties. Pijltoetsen werken ook in ingebouwde keuzelijsten. Escape sluit dialoogvensters en veel menu's.

Links met href, knoppen, invoervelden, keuzelijsten, tekstgebieden, summary-elementen en media met afspeelbediening kunnen standaard focus krijgen. Alinea's, koppen, afbeeldingen, generieke containers en ankers zonder href zijn geen gewone tabstops. Een schermlezer heeft afzonderlijke leesopdrachten voor tekst, dus elke kop aan de tabvolgorde toevoegen vertraagt de toetsenbordnavigatie.

Schakel bij het testen op macOS toetsenbordnavigatie in. De instelling “Druk op Tab om elk onderdeel op een webpagina te markeren” van Safari bepaalt of gewone tabnavigatie links bereikt; Option+Tab kan ze bereiken wanneer die instelling uit staat.

Houd tabindex-waarden eenvoudig
WaardeEffect
tabindex="0"Voegt een tabstop toe in de bronvolgorde
tabindex="-1"Staat focus via een script of als linkdoel toe; Tab slaat het element over
Een positieve waardePlaatst een stop volgens het getal vóór gewone bedieningselementen

Positieve waarden zijn moeilijk te onderhouden omdat ze een tweede systeem voor de volgorde maken. Schrijf de HTML in een logische volgorde en vermijd positieve waarden. Een kop die na een update focus moet krijgen, kan -1 gebruiken zonder bij elke ronde door de pagina een stop te worden.

Controleer betekenis en gedrag samen
<div role="button" tabindex="0">Save</div>

Dit maakt een knoprol beschikbaar en krijgt focus, maar heeft nog steeds een script voor Enter en de spatiebalk, een actie en een zichtbare focusstijl nodig. Vervanging door <button type="button">Save</button> biedt ingebouwde toetsenbordactivering zonder die opnieuw te bouwen. ARIA alleen kan de interactie niet maken.

CSS kan de navigatie ook verstoren. Als de bronvolgorde logo, menu, zoeken en aanmeldlink is, kan CSS order: -1 de aanmeldlink als eerste tonen terwijl Tab die nog steeds als laatste bereikt. Verplaats inhoud in de HTML wanneer de leesvolgorde moet veranderen. WCAG 2.4.3 Focusvolgorde (A) vereist een volgorde die betekenis en bediening behoudt.

Verwijder vallen en verborgen stops

Test of de focus elk component met het toetsenbord kan verlaten. Een kaart of speler die focus accepteert maar geen uitgang via het toetsenbord biedt, veroorzaakt een toetsenbordval, verboden door 2.1.2 Geen toetsenbordval (A).

Een gesloten menu dat buiten beeld is geplaatst of opacity: 0 heeft gekregen, kan nog steeds focusbare links bevatten. Gebruik hidden, display: none of inert voor inhoud die niet beschikbaar mag zijn zolang die gesloten is. Houd een skiplink buiten beeld echter focusbaar: die heeft een bewuste regel die de link zichtbaar maakt zodra die focus krijgt.

Belangrijkste punten

  • Gebruik standaard toetsenbordgedrag voor links en ingebouwde bedieningselementen.
  • Bewaar tabstops voor interactieve inhoud.
  • Gebruik nul voor stops in de bronvolgorde en min één voor bewust focusbeheer.
  • Vermijd positieve tabindex-waarden en visuele herordening die de navigatie verwart.
  • Test op toetsenbordvallen en focus die op verborgen inhoud terechtkomt.

3.2 Maak de focus duidelijk zichtbaar en zorg dat bedieningselementen gemakkelijk te raken zijn

De focus is de huidige positie van de toetsenbordgebruiker. Een zichtbare ring vertelt welk bedieningselement met Enter of de spatiebalk wordt bediend. De ring moet zichtbaar blijven tegen de pagina en het bedieningselement met focus moet in beeld blijven.

Houd een duidelijke indicator

Browsers bieden standaard een omtreklijn voor focus. Als je die met outline: none verwijdert, gaat een essentiële aanwijzing verloren, tenzij je een geschikte vervanging biedt. Gebruik :focus-visible om een ring te tonen wanneer de browser dat nuttig acht, onder meer bij toetsenbordnavigatie en tekstvelden:

:focus-visible {
  outline: 3px solid #1A73E8;
  outline-offset: 2px;
}

Het blauw heeft een contrast van 4,51:1 ten opzichte van wit. Controleer de werkelijke aangrenzende kleuren in het ontwerp; een ring die op wit werkt, kan wegvallen tegen een blauw vlak. WCAG 2.4.7 Focus zichtbaar (AA) vereist zichtbare toetsenbordfocus, terwijl 1.4.11 Contrast van niet-tekstuele content (AA) bij 3:1 geldt voor de visuele informatie die een aangepaste toestand aanduidt, waaronder een aangepaste focusindicator.

Een omtreklijn is een nuttige keuze voor contrastthema's van Windows. Geforceerde kleuren kunnen achtergronden vervangen en boxschaduwen verwijderen, terwijl omtreklijnen beschikbaar blijven. Een schaduw alleen kan dus verdwijnen in een modus waarop iemand vertrouwt.

Houd het bedieningselement met focus in beeld

Klevende kopgebieden, banners en chatknoppen kunnen de focus bedekken. Volgens 2.4.11 Focus niet bedekt (minimum) (AA) mag door de maker geplaatste inhoud de component met focus niet volledig verbergen. De hele component zichtbaar houden is gemakkelijker in gebruik; de eis dat geen deel verborgen is, hoort bij AAA.

Zorg bij een klevend kopgebied van 5rem hoog voor scrollruimte:

html { scroll-padding-top: 5rem; }

Doorloop daarna de echte pagina met Tab. Controleer beide richtingen en test wanneer er een cookiemelding aanwezig is. De CSS-regel is een uitgangspunt; die moet nog steeds werken met de werkelijke afmetingen van het kopgebied en de viewport van de pagina.

Geef ook aanwijzergebruikers ruimte

Grootte van het doelgebied (minimum), 2.5.8 (AA), vereist aanwijzerdoelen van minstens 24 bij 24 CSS-pixels, met uitzonderingen. Een kleiner doel kan voldoen als een cirkel met een diameter van 24 px en het doel als middelpunt geen ander doel of de cirkel van een ander klein doel snijdt. Links binnen een zin, niet aangepaste bedieningselementen waarvan de browser de grootte bepaalt en doelen met een gelijkwaardig bedieningselement op de pagina dat aan de eis voldoet, zijn ook uitgezonderd. Een essentiële of wettelijk vereiste presentatie kan eveneens uitgezonderd zijn.

Bij drie pictogramknoppen van 16 bij 16 px met 4 px tussenruimte zouden de cirkels overlappen. Door aan alle kanten 4 px binnenruimte toe te voegen, wordt elk doel 24 bij 24 px. Meet het aanklikbare gebied, niet alleen het pictogram dat erin is getekend.

Het doel van 44 bij 44 CSS-pixels in 2.5.5 en de grootte-eis voor het focusoppervlak in 2.4.13 zijn AAA-eisen. Het zijn nuttige verbeteringen, maar houd bij het melden van een bevinding hun niveau gescheiden van het AA-minimum.

Belangrijkste punten

  • Houd een zichtbare focusindicator op elk element dat met het toetsenbord kan worden bediend.
  • Controleer het contrast van een aangepaste indicator met aangrenzende kleuren.
  • Voorkom dat klevende inhoud de component met focus volledig verbergt.
  • Meet het hele aanwijzerdoel; AA vereist normaal 24 bij 24 CSS-pixels of een geldige uitzondering.

Herhaalde menu's zouden mensen niet op elke pagina dezelfde route opnieuw moeten laten volgen. Een skiplink biedt een korte route naar de hoofdinhoud. Wanneer een interactie de pagina verandert, helpt bewuste omgang met de focus mensen ook om hun plaats te behouden.

Maak en test een skiplink

Plaats de skiplink vóór de herhaalde bedieningselementen in het kopgebied:

<a class="skip-link" href="#main">Skip to main content</a>
<main id="main" tabindex="-1">
  <h1>Order a birthday cake</h1>
</main>

De link verwijst naar het hoofdinhoudsgebied en tabindex="-1" helpt dat gebied focus te krijgen zonder een gewone tabstop toe te voegen. Navigatie via herkenningspunten van een schermlezer helpt de gebruikers daarvan; de skiplink helpt ook ziende toetsenbordgebruikers om herhaalde blokken te omzeilen volgens 2.4.1 Blokken omzeilen (A).

Houd de link beschikbaar voor het toetsenbord wanneer die visueel is weggestopt:

.skip-link { position: absolute; left: -9999px; }
.skip-link:focus { left: 1rem; top: 1rem; }

Gebruik geen display: none of visibility: hidden, want die verhinderen focus. Laad de pagina opnieuw, druk eenmaal op Tab en controleer of de link verschijnt. Druk op Enter en daarna opnieuw op Tab: de navigatie moet doorgaan bij de eerste link of het eerste bedieningselement van de hoofdinhoud, niet bij het menu in het kopgebied.

Geef na een verandering de focus een logische plek

Als een rij in de winkelwagen en de bijbehorende verwijderknop met focus samen verdwijnen, kan de focus terugvallen naar het begin van de pagina. Verplaats de focus bewust naar de verwijderknop van het volgende item of naar een kop van de winkelwagen met tabindex="-1". Kies een plek waar de taak verdergaat. Alleen naar een gebied scrollen garandeert niet dat de toetsenbordfocus daarheen is verplaatst.

Gebruik een ingebouwd modaal dialoogvenster

Een dialoogvenster dat met showModal() wordt geopend, verplaatst de focus naar binnen en maakt de rest van de pagina inert. Tab blijft binnen het venster zolang het open is; Escape sluit het. Bij het sluiten keert de focus normaal terug naar het element dat het venster opende, als dat nog bestaat.

<button type="button"
  onclick="document.getElementById('hours').showModal()">Opening hours</button>
<dialog id="hours" aria-labelledby="hours-title">
  <h2 id="hours-title">Opening hours</h2>
  <p>Tuesday to Saturday, 08:00–17:00.</p>
  <form method="dialog"><button>Close</button></form>
</dialog>

Het script van één regel vindt het dialoogvenster via de ID en opent het modaal. Het formulier in het dialoogvenster sluit het zonder een ander script. De kop levert de naam. Bij een zelfgebouwde bovenliggende laag moeten al deze interactieregels worden nagebouwd; de achtergrond donker laten lijken, voorkomt niet dat de toetsenbordfocus die bereikt.

Wacht op een bewuste actie

Focus krijgen mag geen nieuwe pagina openen of de context op een andere manier veranderen. Een selectie wijzigen mag dat ook niet onverwacht doen; gebruikers moeten vooraf worden geïnformeerd als dat gedrag optreedt. Een knop “Ga” na een bestemmingskeuze geeft mensen tijd om hun selectie te bekijken en te wijzigen voordat ze navigeren. Dit gedrag ondersteunt 3.2.1 Bij focus (A) en 3.2.2 Bij input (A).

Belangrijkste punten

  • Maak de skiplink het eerste focusbare item en toon die bij focus.
  • Test waar de volgende Tab naartoe gaat na gebruik van de skiplink.
  • Verplaats de focus bewust wanneer een item met focus wordt verwijderd.
  • Gebruik dialog met showModal() voor ingebouwd modaal gedrag.
  • Vermijd onverwachte contextwijzigingen bij focus of selectie.
4

Houd tekst en beeld goed leesbaar

Mensen moeten een pagina onder verschillende kijkomstandigheden kunnen lezen en bedienen. Meet voor- en achtergrondkleuren, combineer kleur met een andere aanwijzing en bouw lay-outs die meegroeien met de tekst. Een leesbare desktopweergave is slechts het begin: vergrote tekst, herschikking bij een smalle breedte en door gebruikers aangepaste tekstafstand kunnen verborgen problemen aan het licht brengen. De controles hier verbinden specifieke visuele eisen aan praktische CSS-aanpassingen.

4.1 Meet het kleurcontrast en voldoe aan de contrasteisen

Contrast meet hoe duidelijk informatie op de voorgrond afsteekt tegen de achtergrond. Een kleur die op het ene scherm leesbaar lijkt, kan moeilijk leesbaar zijn voor iemand met een visuele beperking of bij fel licht. Meet het kleurenpaar in plaats van het op het oog te beoordelen.

Pas het juiste minimum toe
Wat je controleertWCAG AA-minimum
Normale tekst4,5:1
Grote tekst3:1
Visuele informatie die een bedieningselement, de toestand ervan of een betekenisvol grafisch element aanduidt3:1 ten opzichte van aangrenzende kleuren

Grote tekst betekent minstens 18 punt, gelijk aan 24 CSS-pixels, of minstens 14 punt vet, ongeveer 18,7 CSS-pixels vet. Een kop van 20 px in normaal gewicht heeft nog steeds 4,5:1 nodig. Plaatsaanduidingstekst, voettekst en tekst bij aanwijzen en focus zijn niet uitgezonderd van tekstcontrast. Voor logo's, inactieve bedieningselementen en bijkomstige of zuiver decoratieve tekst gelden uitzonderingen.

Begrijp de verhouding

Relatieve luminantie drukt helderheid uit op een schaal van 0 voor zwart tot 1 voor wit. Met de lichtere luminantie als L1 en de donkerdere als L2 is de verhouding:

L1+0,05L2+0,05

De uitersten zijn 1:1 voor identieke kleuren en 21:1 voor zwart tegenover wit. Een contrastcontrole berekent de luminantie uit de kleurkanalen en vergelijkt de verhouding met de relevante drempel.

Voor grijs #767676 is elk kanaal hexadecimaal 76, oftewel 118. Deel door 255 om ongeveer 0,4627 te krijgen. Omdat dit groter is dan 0,04045, reken je het om naar lineair licht:

(0,4627+0,0551,055)2,4≈0,1812

De drie kanalen zijn gelijk, dus hun gewogen luminantie is ook ongeveer 0,1812. Wit heeft luminantie 1. Als je tijdens de hele berekening de volledige precisie behoudt, krijg je 4,54:1, wat voldoet voor normale tekst. Gebruik een controle voor werkelijke kleurenparen, zodat afgeronde tussenwaarden geen invloed hebben op een uitslag dicht bij de drempel.

Rond een onvoldoende nooit af tot een voldoende

Grijs #777777 op wit geeft 4,48:1. Weergave op één decimaal als 4,5 zorgt er niet voor dat het voldoet. Evenzo geeft #949494 op wit 3,03:1 en voldoet het voor grote tekst; #959595 geeft 2,99:1 en voldoet niet voor grote tekst.

Wit op #0066CC geeft 5,57:1. Op amberkleurig #FFC107 geeft witte tekst slechts 1,63:1, terwijl zwart 12,88:1 geeft. Een heldere knopachtergrond kiezen vertelt je niet of de tekst licht of donker moet zijn.

Controleer grenzen en elke achtergrond

Een invoerveldrand die nodig is om het veld te herkennen, moet voldoen aan het contrast voor niet-tekstuele content. #CCCCCC tegenover wit geeft 1,61:1 en voldoet niet; #949494 geeft 3,03:1 en voldoet wel. Dezelfde regel van 3:1 geldt voor betekenisvolle pictogrammen, grafieklijnen en aangepaste focusindicatoren. Voor inactieve en niet aangepaste standaardbedieningselementen van de browser gelden uitzonderingen.

Tekst over een foto of kleurverloop moet voldoen op de zwakste plek erachter. Voeg een effen of voldoende ondoorzichtig vlak toe, of verplaats de tekst. Controleer de resulterende kleuren met ontwikkelaarstools of een contrastcontrole. WCAG 1.4.3 geldt voor tekst en 1.4.11 voor niet-tekstuele informatie; AAA-drempels voor tekst zijn hoger, namelijk 7:1 voor normale en 4,5:1 voor grote tekst.

Controleer onderdelen van een knop afzonderlijk

Stel dat een knop witte tekst van normale grootte op #0066CC heeft, op een witte pagina staat en een aangepaste focusring #CCCCCC gebruikt. Controleer elke relatie:

  1. Het label tegenover de blauwe knop is 5,57:1, boven het tekstminimum van 4,5:1.
  2. De blauwe knop tegenover de witte pagina is ook 5,57:1, dus de grens is te onderscheiden.
  3. De lichtgrijze focusring tegenover de witte pagina is slechts 1,61:1. Die toestandsindicator voldoet niet, ook al voldoet het label wel.

Vervang de ring door een kleur die 3:1 haalt tegenover de aangrenzende achtergrond en meet opnieuw. Een meting voor het knoplabel meet niet ook elke grens of interactietoestand. Behandel de tekst, component en aangepaste toestand als afzonderlijke controles van kleurenparen.

Belangrijkste punten

  • Normale tekst heeft 4,5:1 nodig; grote tekst heeft op AA-niveau 3:1 nodig.
  • Grote tekst wordt bepaald door grootte en gewicht, niet door de rol als kop.
  • Rond een resultaat nooit naar boven af tot een drempel waarop het voldoet.
  • Belangrijke grenzen van bedieningselementen, toestanden en grafische elementen hebben 3:1 nodig ten opzichte van aangrenzende kleuren.
  • Controleer tekst over afbeeldingen op de zwakste plek van de achtergrond.
  • Gebruik een contrastcontrole om het werkelijke kleurenpaar te meten.

4.2 Gebruik kleur samen met andere aanwijzingen

Kleur kan aandacht trekken, maar mag niet de enige zichtbare aanwijzing voor betekenis zijn. Mensen kunnen een kleurzienstoornis hebben, grijstinten of contrastinstellingen gebruiken, of inhoud via een schermlezer horen zonder kleuraankondigingen. Combineer kleur met tekst, vormen, patronen of een andere duidelijke aanwijzing.

Houd twee controles gescheiden

Contrast gaat na of een voorgrond van de achtergrond te onderscheiden is. Gebruik van kleur, WCAG 1.4.1 (A), gaat na of de informatie begrijpelijk blijft zonder de kleur te herkennen. Een donkerrood label op wit kan aan het contrast voldoen en toch niet duidelijk maken welk veld een fout bevat.

Begin met de boodschap. Als de pagina zegt “Kies een groene optie”, geef dan elke optie ook een bruikbare naam. Als een rode stip betekent dat een winkel gesloten is, voeg dan “Nu gesloten” ernaast toe. De tekst geeft de status weer, terwijl de kleur mensen helpt die op te merken.

Houd links herkenbaar

De eenvoudigste manier om een link in een alinea aan te duiden is een onderstreping. Die geeft ook een aanwijzing wanneer de link en de omringende tekst in grijstinten worden gezien.

Een verschil met de omringende tekst dat alleen op kleur berust, heeft minstens 3:1 contrast tussen de twee tekstkleuren nodig en een extra aanwijzing, zoals een onderstreping, bij aanwijzen en focus. De linktekst moet ook voldoen aan tekstcontrast ten opzichte van de achtergrond. Dit zijn afzonderlijke vergelijkingen; blauw dat voldoet tegenover wit kan te veel lijken op de aangrenzende donkere alineatekst.

Leg fouten en verplichte velden uit

Toon bij een e-mailfout “Fout: voer een e-mailadres in volgens het formaat name@example.com” naast het veld. Een rode omtreklijn kan als extra aanwijzing blijven staan. De tekst duidt het probleem aan en vertelt de gebruiker hoe het kan worden opgelost, terwijl de code de tekst aan het veld koppelt.

Gebruik voor verplichte velden een label zoals “E-mailadres (verplicht)”. Een sterretje werkt ook wanneer aan het begin van het formulier wordt uitgelegd dat “* verplicht betekent”. Voeg het ingebouwde required-attribuut toe, zodat de verplichting beschikbaar is voor hulptechnologie en browservalidatie. Rode labeltekst alleen biedt geen voldoende zichtbare uitleg en ook geen programmatisch vastgelegde verplichting.

Geef grafische elementen een tweede manier om te communiceren

Een verkoopgrafiek met twee reeksen heeft meer nodig dan een rode en een groene lijn. Directe labels, verschillende lijnstijlen of patronen laten mensen elke reeks volgen zonder de kleur te herkennen. Gebruik deze aanwijzingen zowel in de grafiek als in de legenda, zodat ze overeenkomen.

Controleer de pagina met emulatie van grijstinten of een kleurzienstoornis in de ontwikkelaarstools. Inspecteer links in lopende tekst, fouten, verplichte velden, grafieken en beschikbaarheidsindicatoren. Vraag je af welke zichtbare aanwijzing voor elk onderscheid overblijft. Verdwijnt een onderscheid, voeg dan een aanwijzing toe die de betekenis vermeldt of uitbeeldt; alleen de verzadiging verhogen levert de ontbrekende informatie niet op.

Belangrijkste punten

  • Combineer betekenisvolle kleurverschillen met een andere zichtbare aanwijzing.
  • Controleer contrast en kleurgebruik afzonderlijk.
  • Onderstreep links of voldoe zowel aan de voorwaarden voor kleurverschil als aan die voor een aanwijzing bij interactie.
  • Gebruik tekst voor fouten, verplichte velden en statusindicatoren.

4.3 Houd pagina's bruikbaar wanneer je inzoomt of tekst vergroot

Een pagina vergroten moet het gebruik gemakkelijker maken zonder bedieningselementen te verbergen of zinnen af te snijden. Mensen kunnen de hele pagina vergroten, alleen tekst vergroten of hun eigen tekstafstand toepassen. Flexibele lay-outs laten deze keuzes samenwerken.

Test tekstgrootte en herschikking

WCAG 1.4.4 Herschalen van tekst (AA) vereist dat tekst tot 200% kan worden vergroot zonder verlies van inhoud of functionaliteit. Browserzoom gebruikt Ctrl en plus op Windows of Cmd en plus op macOS. Test ook een grotere standaardlettergrootte, die tekst verandert zonder al het andere op dezelfde manier te vergroten.

WCAG 1.4.10 Herschikking (AA) vereist dat gewone inhoud werkt bij 320 CSS-pixels breed zonder in twee richtingen te scrollen. Een venster van 1280 CSS-pixels breed biedt bij 400% zoom die effectieve breedte. Alinea's moeten naar een smalle kolom teruglopen, met alle functies nog beschikbaar. Voor gegevenstabellen, kaarten en andere inhoud waarvan de betekenis twee dimensies nodig heeft, gelden uitzonderingen.

Laat de lay-out meegroeien met de tekst

Gebruik relatieve lettereenheden zoals rem en em, zodat tekst de standaardletterinstelling van de gebruiker volgt. Tekst in CSS-pixels reageert nog steeds op browserzoom, maar volgt die standaardinstelling niet op dezelfde manier. Flexibele containers en max-width laten regels teruglopen; breekpunten in em kunnen zich aanpassen als de tekst groeit.

Een vaste hoogte kan ongemerkt inhoud afsnijden:

/* Problem when larger text needs more space */
.card { height: 200px; overflow: hidden; }

/* Content can grow beyond the minimum */
.card { min-height: 200px; }

Laat de inhoud de hoogte bepalen. Stapel navigatie bij smalle breedtes of bied een toegankelijke uitklapbediening in plaats van links te verwijderen. Laat een te groot klevend kopgebied wegscrollen als het te veel van het bruikbare scherm inneemt.

Houd mobiel zoomen beschikbaar

Gebruik een viewportdeclaratie die de apparaatbreedte volgt:

<meta name="viewport" content="width=device-width, initial-scale=1">

Voeg geen maximum-scale=1 of user-scalable=no toe. Die proberen zoomen met een knijpbeweging te blokkeren, wat mensen met een visuele beperking nodig kunnen hebben. Sommige browsers negeren die beperkingen, maar gebruikers zouden niet afhankelijk moeten zijn van dat gedrag.

Pas de tekstafstand van de gebruiker toe

WCAG 1.4.12 Tekstafstand (AA) vereist dat geen inhoud verloren gaat of overlapt wanneer gebruikers de volgende afstanden instellen als veelvoud van de lettergrootte: de regelhoogte op 1,5 keer, de alinea-afstand op 2 keer, de letterafstand op 0,12 keer en de woordafstand op 0,16 keer. Dit zijn testinstellingen, geen verplichte standaardwaarden voor het ontwerp. Gebruik een hulpmiddel voor tekstafstand en controleer naast alinea's ook labels, kaarten, menu's en knoppen.

Een praktische controle combineert een teksttest op 200%, een herschikkingstest op 320 CSS-pixels en de aanpassing van de tekstafstand. Let op afgesneden regels, overlappende labels, horizontaal scrollen bij alinea's en verdwenen functies. Los het probleem op in de container of lay-out die het veroorzaakt; door de vergrote tekst van de gebruiker te verkleinen, neem je het gevraagde voordeel weg.

Belangrijkste punten

  • Houd tekst en functionaliteit beschikbaar bij 200% vergroting.
  • Controleer de herschikking van gewone inhoud bij 320 CSS-pixels breed.
  • Gebruik relatieve lettergroottes en containers die kunnen meegroeien.
  • Sta zoomen met een knijpbeweging toe en behoud functies in smalle lay-outs.
  • Test door gebruikers aangepaste tekstafstand op afsnijding en overlapping.
5

Maak toegankelijke formulieren

Een toegankelijk formulier legt uit wat je moet invoeren, maakt elk bedieningselement gemakkelijk herkenbaar en helpt mensen fouten te herstellen. Koppel zichtbare labels en instructies in HTML, gebruik de invoer- en automatisch-aanvullenfuncties van de browser en bewaar antwoorden tijdens een proces. Wanneer een bericht verschijnt, bepaal je of de focus ernaartoe moet gaan of dat een aankondiging de gebruiker op dezelfde plek laat doorwerken.

5.1 Geef elk formulieronderdeel een label en groepeer samenhangende onderdelen

Een zichtbaar label vertelt iemand wat die moet invoeren en geeft een veld een toegankelijke naam. Groepslabels voegen de vraag toe die verschillende keuzes beantwoorden. De koppelingen moeten in HTML bestaan, ook wanneer labels en velden al dicht bij elkaar lijken te staan.

Koppel een label aan één bedieningselement

Een expliciet label gebruikt for om naar de unieke id van het bedieningselement te verwijzen:

<label for="email">Email address</label>
<input id="email" name="email" type="email">

De browser kan “Email address” aankondigen wanneer het veld focus krijgt. Klikken op de tekst geeft het veld ook focus en biedt gebruikers een groter doel. Het name-attribuut duidt verzonden gegevens aan; het vervangt niet de id die het label gebruikt.

Een impliciet label omsluit zijn invoerveld: <label>Email address <input type="email" name="email"></label>. Dit werkt wanneer beide in hetzelfde label-element passen. Bij gescheiden lay-outcontainers is de expliciete koppeling gemakkelijker te onderhouden.

Een plaatsaanduiding verdwijnt tijdens het typen en heeft vaak weinig contrast. Houd het label zichtbaar en plaats voorbeelden of aanwijzingen over het formaat in de buurt. “Veld 1” is technisch gezien een naam, maar beschrijft het doel niet. WCAG 2.4.6 Koppen en labels (AA) vereist beschrijvende tekst.

Houd de zichtbare woorden in de naam

Iemand die spraakbediening gebruikt, kan “klik op Verzenden” zeggen na het zien van een knop Verzenden. Als aria-label="Submit form" de tekst van die knop overschrijft, bevat de toegankelijke naam de zichtbare woorden niet meer. WCAG 2.5.3 Label in naam (A) vereist dat die woorden worden opgenomen, bij voorkeur aan het begin. Gebruik waar mogelijk de zichtbare tekst zelf: <button type="submit">Send message</button>.

Een afzonderlijk zoekveld kan een visueel verborgen label hebben als een nabijgelegen knop Zoeken het doel visueel duidelijk maakt. Verborgen labels zijn geen algemene vervanging voor zichtbare instructies in een heel formulier.

Groepeer keuzes onder hun vraag
<fieldset>
  <legend>Delivery method</legend>
  <input type="radio" id="pickup" name="delivery" value="pickup">
  <label for="pickup">Pick up in store</label>
  <input type="radio" id="courier" name="delivery" value="courier">
  <label for="courier">Courier delivery</label>
</fieldset>

Het groepsbijschrift bevat de vraag voor de groep; elk keuzerondje heeft nog steeds een eigen label nodig. Schermlezers kunnen de groepscontext samen met een optie aankondigen. Gebruik dezelfde name voor onderling uitsluitende keuzerondjes en korte groepsbijschriften die nuttig blijven wanneer ze worden herhaald. Samenhangende selectievakjes kunnen ook een fieldset en legend gebruiken.

Kies typen en controleer koppelingen

Gebruik email, tel, url en date voor de bijpassende gegevens. De typen email en URL bieden een formaatcontrole; telefoonvelden kunnen een geschikt mobiel toetsenbord aanbieden, maar valideren geen telefoonnummerformaten. Gebruik number voor aantallen zoals het aantal gasten, niet voor telefoon- of kaartnummers.

Klik op elk label om de koppeling te testen. Als het verkeerde veld focus krijgt, controleer dan op dubbele ID's of een for die niet overeenkomt. Inspecteer ook de berekende naam in de ontwikkelaarstools; alleen visuele nabijheid kan een label niet koppelen.

Belangrijkste punten

  • Koppel elk label aan een unieke ID van een invoerveld of omsluit het ene bedieningselement.
  • Houd labels zichtbaar; gebruik plaatsaanduidingen alleen als aanvullende inhoud.
  • Houd de zichtbare labeltekst in de toegankelijke naam.
  • Gebruik fieldset en legend voor een samenhangende groep keuzes.
  • Kies invoertypen voor het soort gegevens en controleer labelkoppelingen.

5.2 Geef instructies, markeer verplichte velden en ondersteun automatisch invullen

Instructies helpen het meest wanneer ze vóór een fout worden gegeven. Een goed formulier legt uit welke invoer wordt verwacht, laat zien wat verplicht is en ondersteunt de hulpmiddelen van de browser voor het invoeren van persoonlijke gegevens. Het voorkomt ook dat gebruikers onnodig werk moeten herhalen.

Koppel een toelichting zonder het label te vervangen
<label for="pw">Password (required)</label>
<input id="pw" type="password" required
       autocomplete="new-password" aria-describedby="pw-hint">
<p id="pw-hint">At least 12 characters.</p>

Het label geeft het veld een naam. De zichtbare alinea legt de eis uit en aria-describedby voegt die tekst toe als beschrijving. Schermlezers kunnen die na de naam aankondigen. Vermeld bij meerdere beschrijvingen hun ID's, gescheiden door spaties, zoals aria-describedby="pw-hint pw-error".

Markeer verplichte velden zichtbaar en met required. Je kunt “(verplicht)” schrijven of aan het begin van het formulier een sterretje uitleggen. Het ingebouwde required ondersteunt browservalidatie en hulptechnologie; het heeft geen extra aria-required="true" nodig.

Duid het doel van persoonlijke gegevens aan

Volgens 1.3.5 Identificeer het doel van de input (AA) hebben velden die gegevens van de gebruiker verzamelen passende autocomplete-tokens nodig. Voorbeelden zijn name, given-name, family-name, email, tel, street-address, postal-code, country-name en bday. Inlogvelden kunnen username en current-password gebruiken; een nieuw wachtwoord gebruikt new-password en een verificatiecode kan one-time-code gebruiken.

Met deze tokens kunnen browsers, wachtwoordmanagers en hulpmiddelen het doel van een veld herkennen. Gebruik het passende token voor de gebruiker van wie de gegevens worden ingevoerd. Als je het contactadres van een vriend markeert als het eigen e-mailadres van de gebruiker voor automatisch invullen, kunnen de verkeerde gegevens worden ingevuld.

Beperk wat gebruikers moeten onthouden en opnieuw invoeren

Sta plakken in wachtwoord- en verificatiecodevelden toe en ondersteun wachtwoordmanagers. WCAG 3.3.8 Toegankelijke authenticatie (minimum) (AA) staat cognitieve tests bij het inloggen alleen toe met een alternatief of hulp die aan de eisen voldoet, of met de genoemde uitzonderingen voor herkenning van voorwerpen of eigen inhoud. Plakken blokkeren vormt een belemmering wanneer gebruikers daardoor informatie moeten onthouden of overtypen en er geen alternatieve inlogroute is die aan de eisen voldoet.

Neem bij een bestelling met meerdere stappen eerder ingevoerde informatie mee naar volgende stappen. Een keuze “Factuuradres is hetzelfde als afleveradres” voorkomt opnieuw typen. WCAG 3.3.7 Overbodige invoer (A) staat uitzonderingen toe wanneer herhaling essentieel is, nodig is voor de veiligheid of de eerdere informatie niet meer geldig is.

Bied een voorzorgsmaatregel bij inzendingen met gevolgen

Een bestelling kan een financiële verplichting opleveren. Bied vóór de afronding een controlestap waarmee gebruikers gegevens kunnen verbeteren. Volgens 3.3.4 Foutpreventie (wettelijk, financieel, gegevens) (AA) moeten relevante inzendingen ongedaan kunnen worden gemaakt, op fouten worden gecontroleerd met een mogelijkheid tot correctie, of worden nagekeken en bevestigd met een mogelijkheid tot correctie. Dit geldt ook voor het wijzigen of verwijderen van opgeslagen gegevens die gebruikers beheren en het indienen van toetsantwoorden.

Houd de lay-out van het formulier ook bij vergroting gemakkelijk te volgen: labels direct boven velden en één hoofdkolom verkleinen de afstand tussen een instructie en de plek waarop die van toepassing is.

Onderscheid formaat van persoonlijk doel

Het invoertype en het autocomplete-token beantwoorden verschillende vragen. Het type duidt het soort waarde aan en kan een formaatcontrole bieden. Het token duidt de persoonlijke gegevens van de gebruiker aan voor automatisch invullen:

<label for="your-email">Your email address (required)</label>
<input id="your-email" name="email" type="email"
       required autocomplete="email">
<label for="guest-email">Guest's email address</label>
<input id="guest-email" name="guest-email" type="email">

Beide velden accepteren e-mailadressen, maar alleen het eerste vraagt om het e-mailadres van de huidige gebruiker. Het tweede mag voor automatisch invullen niet worden gemarkeerd als het e-mailadres van die gebruiker. De zichtbare labels behouden het onderscheid voor mensen die de waarden zelf invoeren. Een token veranderen verandert niet wat het e-mailtype controleert.

Belangrijkste punten

  • Geef vóór de invoer zichtbare instructies en koppel toelichtingen met aria-describedby.
  • Markeer verplichte velden zowel zichtbaar als met het ingebouwde required.
  • Gebruik passende autocomplete-tokens voor de gegevens van de gebruiker.
  • Ondersteun wachtwoordmanagers en plakken om belemmeringen bij het inloggen te verminderen.
  • Gebruik eerdere antwoorden opnieuw in processen met meerdere stappen, tenzij een uitzondering geldt.
  • Bied een passende voorzorgsmaatregel tegen fouten bij inzendingen met gevolgen.

5.3 Geef fouten en statusberichten duidelijk weer

Een foutmelding moet iemand helpen een fout te herstellen zonder al verricht werk te verliezen. Een statusbericht moet een verandering melden zonder iemand van diens plek weg te halen. Beide hebben zichtbare tekst en de juiste programmatische koppeling nodig.

Noem het probleem en een bruikbare oplossing

“Ongeldige invoer” biedt weinig hulp. “Fout: voer een e-mailadres in volgens het formaat name@example.com” geeft aan wat aandacht nodig heeft en stelt een oplossing voor. WCAG 3.3.1 Foutidentificatie (A) vereist dat ontdekte fouten in tekst worden beschreven; 3.3.3 Foutsuggestie (AA) vereist bekende oplossingen wanneer die de veiligheid of het doel van het formulier niet ondermijnen.

<label for="email">Email address</label>
<input id="email" type="email" aria-invalid="true"
       aria-describedby="email-error">
<p id="email-error">Error: Enter an email address in the format name@example.com</p>

Stel aria-invalid="true" pas in nadat je het veld hebt gecontroleerd en een fout hebt gevonden. Het attribuut meldt de ongeldige toestand; de beschrijving legt de reden uit. Een rode rand alleen biedt noch de tekstuele uitleg, noch de koppeling.

Help mensen meerdere fouten te vinden

Na verzending kan een lang formulier bovenaan een foutenoverzicht tonen. Geef het een kop zoals “Er zijn 2 problemen met je bestelling” en daarna links naar de betreffende velden. Maak het overzicht focusbaar met tabindex="-1" en laat het script er focus op zetten. Door “Fout: ” voor de paginatitel te zetten, help je ook de veranderde toestand van de pagina aan te duiden.

Houd veldmeldingen ook naast hun invoervelden en bewaar alles wat al is ingevoerd. Een link in het overzicht brengt iemand naar een veld; de uitleg bij het veld helpt tijdens het verbeteren. Door elk veld leeg te maken, dwing je gebruikers geslaagd werk te herhalen.

Ingebouwde validatieattributen zoals required, type="email" en minlength kunnen browsermeldingen opleveren. Een aangepast systeem kan novalidate gebruiken en eigen meldingen tonen. In beide gevallen hebben fouten tekst nodig die gebruikers kunnen vinden en aan het betreffende veld kunnen koppelen.

Kondig een verandering aan zonder de focus te verplaatsen

Een winkelwagen wordt vaak bijgewerkt terwijl de focus op de toevoegknop moet blijven. Gebruik een livegebied dat al in het document aanwezig is:

<p role="status" id="cart-status"></p>

Wanneer een item wordt toegevoegd, verandert een script de tekst ervan in “1 zuurdesembrood toegevoegd aan je winkelwagen”. role="status" is beleefd: de schermlezer kan eerst uitspreken voordat die de wijziging aankondigt. Dit ondersteunt 4.1.3 Statusberichten (AA).

Bewaar role="alert", een dwingende aankondiging, voor dringende berichten. Voortdurende onderbrekingen maken gewoon winkelen moeilijker. Voeg het lege gebied in voordat je de inhoud bijwerkt; het gebied en de melding tegelijk maken wordt in veel combinaties niet betrouwbaar aangekondigd. Houd de focus bij de taak voor gewone wijzigingen en verplaats die bewust in situaties zoals een foutenoverzicht dat de gebruiker moet bekijken.

Belangrijkste punten

  • Duid fouten aan in tekst en stel een oplossing voor wanneer die bekend is.
  • Gebruik aria-invalid voor een gecontroleerde fout en koppel de bijbehorende foutbeschrijving.
  • Bewaar ingevoerde gegevens en bied een foutenoverzicht bij langere formulieren.
  • Werk een bestaand statusgebied bij om gewone veranderingen aan te kondigen zonder de focus te verplaatsen.
  • Gebruik alertmeldingen alleen voor dringende berichten.
6

Gebruik ARIA terughoudend en test je pagina's

ARIA kan informatie beschrijven die ingebouwde HTML niet zelfstandig uitdrukt, maar de verwachtingen die ARIA wekt moeten overeenkomen met het gedrag van de interface. Leer namen en toestanden zorgvuldig kiezen en inspecteer daarna wat de browser meldt. Combineer geautomatiseerde scans met tests met een toetsenbord, zoom en een schermlezer om zowel codefouten als belemmeringen te vinden die een menselijk oordeel vragen. Een bruikbare bevinding bevat een duidelijke manier om het probleem te reproduceren en opnieuw te testen.

6.1 Pas de regels voor het gebruik van ARIA toe

ARIA voegt informatie toe aan de toegankelijkheidsboom wanneer HTML hulp nodig heeft om een naam, relatie of toestand uit te drukken. Het bouwt de interactie zelf niet. Controleer voordat je een attribuut toevoegt wat het ingebouwde element al biedt en wat daadwerkelijk ontbreekt.

Zie een rol als een belofte

WAI-ARIA staat voor Accessible Rich Internet Applications. Versie 1.2 werd in juni 2023 een W3C-aanbeveling. De rollen, toestanden en eigenschappen beïnvloeden wat hulptechnologieën te horen krijgen. Een rol zoals button belooft knopgedrag, maar maakt het element niet focusbaar en voegt geen toetsenbordactivering of vormgeving toe.

Een div met role="button" heeft nog steeds toetsenbordafhandeling en ondersteuning voor focus nodig. Een echte button biedt die al. Het principe “geen ARIA is beter dan slechte ARIA” uit de ARIA Authoring Practices Guide waarschuwt dat onjuiste informatie gebruikers kan misleiden over wat een bedieningselement doet.

Behoud de ingebouwde betekenis

Gebruik eerst ingebouwde elementen en attributen: nav, button, een selectievakje en het ingebouwde required. Herhaal geen impliciete rollen zoals role="main" op main of role="button" op button. Een nuttige uitzondering is role="list" op een lijst waarvan de verwijderde opsommingstekens de aankondigingen van VoiceOver beïnvloeden.

Vervang de betekenis van een kop niet door een knoprol. Nest er een knop in:

<h2>
  <button type="button" aria-expanded="false">Shipping</button>
</h2>

De kop verschijnt nog steeds in kopnavigatie en de knop maakt de actie beschikbaar. Het script moet de getoonde inhoud en de uitgeklapte toestand met elkaar laten overeenkomen.

Plaats aria-hidden="true" nooit op een focusbaar bedieningselement of een bovenliggend element dat er een bevat. De focus zou terecht kunnen komen op iets wat uit de toegankelijkheidsboom is verwijderd. role="presentation" en role="none" werken anders: ze verwijderen de semantiek, niet de inhoud. Browsers negeren die rollen op focusbare elementen, dus ze kunnen niet worden gebruikt om een werkende link in gewone tekst te veranderen.

Zoek de bron van een naam

Controleer voor de gewone bedieningselementen hier de naambronnen in deze volgorde van prioriteit:

  1. aria-labelledby, dat via een ID naar tekst verwijst.
  2. aria-label, dat een tekstreeks biedt.
  3. De ingebouwde bron, zoals een label, knoptekst of alternatieve tekst van een afbeelding.
  4. title, als laatste redmiddel waar van toepassing.

aria-describedby voegt een beschrijving toe na de naam; het stelt de naam niet in. Een overschrijving kan per ongeluk nuttige zichtbare tekst verbergen. <button aria-label="Close dialog">Cancel</button> wordt aangekondigd als “Close dialog”, hoewel de gebruiker “Cancel” ziet. Geef de voorkeur aan zichtbare tekst, of neem die aan het begin op van een uitgebreide naam als die nodig is.

Eenvoudige websites hebben vaak ARIA nodig voor namen van herhaalde herkenningspunten, pictogramknoppen, veldtoelichtingen en fouten, uitklapbedieningen, links naar de huidige pagina en live-updates. Een grote verzameling ARIA-attributen is geen maat voor kwaliteit. Inspecteer de berekende rol en naam en controleer met het toetsenbord het gedrag dat de rol belooft.

Volg concurrerende naambronnen

Bekijk een knop met meerdere naamgevende attributen:

<h2 id="options-title">Delivery options</h2>
<button type="button" aria-labelledby="options-title"
        aria-label="Choose delivery">Show pickup options</button>

Volg eerst aria-labelledby: de tekst waarnaar wordt verwezen levert “Delivery options”. Het aria-label en de zichtbare knoptekst hebben lagere prioriteit en krijgen geen voorrang. Alleen aria-label verwijderen laat daarom dezelfde berekende naam staan.

Om deze knop de naam “Show pickup options” te laten krijgen, verwijder je beide onnodige overschrijvingen. De knoprol blijft steeds hetzelfde; alleen de bron van de naam verandert. Inspecteer de berekende naam na elke wijziging, zodat je kunt zien welk attribuut het verschil veroorzaakte. Een beschrijving toevoegen zou de verkeerde naam niet herstellen, omdat een beschrijving een afzonderlijk stuk informatie is.

Belangrijkste punten

  • Geef de voorkeur aan ingebouwde HTML-betekenis en -gedrag voordat je ARIA toevoegt.
  • ARIA verandert de toegankelijkheidsboom, niet de toetsenbordafhandeling of vormgeving.
  • Behoud ingebouwde semantiek wanneer je interactieve inhoud toevoegt.
  • Verberg een focusbaar element of een bovenliggend element ervan nooit met aria-hidden.
  • Controleer overschrijvingen van namen; beschrijvingen vervangen geen namen.

6.2 Maak veranderende toestanden kenbaar met ARIA

Een veranderende interface moet visueel en programmatisch hetzelfde vertellen. Als een paneel open is maar de knop nog steeds “ingeklapt” meldt, krijgt een schermlezergebruiker onjuiste informatie. Werk de toestand bij wanneer de interface verandert.

Houd een uitklapbediening synchroon
<button type="button" aria-expanded="false"
        aria-controls="main-menu">Menu</button>
<ul id="main-menu" hidden>
  <li><a href="/bread">Bread</a></li>
</ul>

Wanneer het menu opent, verwijdert het script hidden en stelt het aria-expanded van de knop in op true. Wanneer het menu sluit, zet het script hidden terug en stelt het de toestand in op false. De toestand hoort bij de knop die schakelt. aria-controls duidt het betreffende element aan; de ondersteuning verschilt, dus het kan de uitgeklapte toestand of het werkelijke verbergen niet vervangen.

Kies de toestand die bij het bedieningselement past
SituatieAttribuut
Een bedieningselement opent of sluit inhoudaria-expanded
Een navigatielink duidt de huidige pagina aanaria-current="page"
Een knop blijft aan of uitaria-pressed

Geef bij de link naar de huidige pagina hetzelfde attribuut vorm in CSS, bijvoorbeeld met een vet lettertype en een onderrand op a[aria-current="page"]. Zo blijft de zichtbare markering gekoppeld aan de aangekondigde toestand. aria-selected hoort bij widgets zoals tabbladen en keuzelijstopties, niet bij gewone paginanavigatielinks.

Een schakelknop kan het label “Dempen” behouden en aria-pressed wisselen tussen false en true. Een ander geldig ontwerp verandert het label van een gewone actieknop tussen “Dempen” en “Dempen opheffen” zonder ingedrukte toestand. Combineer een veranderend actielabel niet met het patroon voor een schakeltoestand, want dat kan verwarrende aankondigingen opleveren zoals “Dempen opheffen, ingedrukt”.

Onderscheid verbergen van uitschakelen

aria-hidden="true" verwijdert een element en zijn afstammelingen uit de toegankelijkheidsboom, maar laat ze zichtbaar. Gebruik het voor decoratieve pictogrammen of overbodige visuele inhoud. Het stopt toegang met het toetsenbord niet. Gebruik hidden of display: none wanneer een gebied voor iedereen onbeschikbaar moet zijn.

Het ingebouwde disabled voorkomt gewone interactie met een ingebouwd bedieningselement. aria-disabled="true" meldt een niet-beschikbare toestand, maar blokkeert klikken of toetsenbordactivering niet. Als dat attribuut wordt gebruikt om een uitgeschakeld bedieningselement focusbaar te houden voor uitleg, moet het script de actie voorkomen. Geef bij ingebouwde invoervelden ook de voorkeur aan het ingebouwde checked en required.

Test beide richtingen

Open en sluit de uitklapbediening met het toetsenbord terwijl je de attributen in de ontwikkelaarstools bekijkt. Inspecteer de berekende toestand en luister naar de aankondiging. Een geslaagde visuele verandering alleen laat niet zien dat de toestand is bijgewerkt, en een veranderd attribuut alleen laat niet zien dat het paneel zichtbaar of bruikbaar is geworden.

Belangrijkste punten

  • Werk ARIA-toestanden bij wanneer de bijbehorende interfacetoestand verandert.
  • Zet aria-expanded op de uitklapbediening.
  • Gebruik aria-current="page" voor links naar de huidige pagina.
  • Houd het label van een schakelknop met ingedrukte toestand gelijk.
  • Verbergen en uitschakelen met ARIA regelen geen toetsenbord- of klikgedrag.

6.3 Voer geautomatiseerde toegankelijkheidscontroles uit en interpreteer de resultaten

Geautomatiseerde controles vinden snel veel codeproblemen op een weergegeven pagina. Gebruik hun resultaten om belemmeringen te vinden en oplossingen te controleren. Hun regels kunnen sommige relaties en waarden inspecteren, maar om te bepalen of inhoud begrijpelijk is, blijft een mens nodig.

Kies een controlehulpmiddel en inspecteer de bevindingen

Axe DevTools gebruikt de axe-core-engine. WAVE plaatst markeringen op de pagina, zodat bevindingen in hun context te zien zijn. Lighthouse in de ontwikkelaarstools van Chrome geeft een toegankelijkheidsscore op basis van een selectie van axe-core-controles. Accessibility Insights biedt een andere werkwijze voor testen. De W3C Markup Validation Service controleert HTML-problemen zoals dubbele ID's en niet-afgesloten elementen.

Afhankelijk van hun regels en de context kunnen hulpmiddelen ontbrekende alt-attributen, bedieningselementen zonder naam, ontbrekende veldlabels, laag tekstcontrast op effen achtergronden, ontbrekende paginataal en ongeldige ARIA ontdekken. Sommige problemen met kopniveaus verschijnen als waarschuwingen. Lees de uitleg bij de bevinding en inspecteer het aangeduide element.

Een waarschuwing of resultaat met “needs review” vraagt om een oordeel. Vetgedrukte tekst die als mogelijke kop is gemarkeerd, kan een echte sectietitel zijn die als alinea is geschreven, maar kan ook alleen een zin benadrukken. Onderzoek het doel voordat je de opmaakcode verandert.

Begrijp wat de scan niet kan beslissen

Een controlehulpmiddel kan alt="photo" zien zonder te weten dat het alternatief nutteloos is. Het kan niet betrouwbaar beoordelen of linktekst duidelijk is, ondertiteling correct is, de focusvolgorde logisch is of een foutmelding iemand helpt een fout te herstellen. Een visuele bovenliggende laag kan het toetsenbord op een manier vasthouden die de huidige scan niet ontdekt. Tekst over een foto vereist ook handmatige contrastcontrole.

Een score van 100 betekent dat de geteste regels geen fouten hebben gevonden. Het is geen oordeel dat de pagina aan WCAG voldoet. Blijf taken en betekenissen testen die deze regels niet kunnen beoordelen.

Test de toestanden die mensen gebruiken

Een scan onderzoekt de op dat moment weergegeven toestand. Voer controles uit op elke paginasjabloon en opnieuw met menu's en dialoogvensters open, na formulierfouten en bij smalle breedtes. Een gesloten component kan problemen verbergen die alleen tijdens gebruik verschijnen.

Stel dat een rapport voor een bakkerij een prominente hoofdafbeelding zonder alt, een nieuwsbriefveld zonder label en voettekst #999999 op wit vindt. Bepaal eerst of de afbeelding informeert of decoreert. Voeg een bruikbaar alternatief of alt="" toe, afhankelijk van het doel. Koppel het e-mailveld aan een zichtbaar label. Het kleurenpaar van de voettekst heeft 2,85:1 contrast; de tekstkleur vervangen door #595959 geeft 7,00:1 op wit.

Los oorzaken op en controleer resultaten

Geef belemmeringen prioriteit op basis van hun effect op de taak. Een toetsenbordval of verplicht bedieningselement zonder naam kan een bestelling volledig tegenhouden. Herstel een gedeeld veld of een gedeelde voettekstcomponent bij de bron, zodat elke pagina die deze gebruikt verbetert. Voer daarna de scan opnieuw uit in dezelfde toestand en herhaal de relevante handmatige test. Een lager aantal fouten is nuttig bewijs, maar de oplossing moet de gebruiker ook in staat stellen de taak af te maken.

Belangrijkste punten

  • Gebruik geautomatiseerde hulpmiddelen om problemen te vinden die software kan herkennen.
  • Inspecteer waarschuwingen en te beoordelen onderdelen voordat je een oplossing kiest.
  • Een rapport zonder fouten omvat alleen de controles die het hulpmiddel kan uitvoeren.
  • Scan paginasjablonen en interactieve toestanden, niet alleen de eerste weergave van pagina's.
  • Geef taakblokkerende belemmeringen prioriteit, los gedeelde oorzaken op en test opnieuw.

6.4 Test handmatig met een toetsenbord, zoom en een schermlezer

Handmatige tests laten zien hoe een pagina zich gedraagt tijdens een echte taak. Combineer toetsenbordgebruik, vergrote weergaven, schermlezercontroles en rechtstreekse inspectie van de boom. Leg genoeg details vast zodat iemand anders een probleem kan reproduceren en de oplossing kan bevestigen.

Volg een toetsenbordtaak van begin tot eind

Leg de muis opzij. Begin in de adresbalk en doorloop de pagina met Tab. Bereik elke link en elk bedieningselement, gebruik waar passend Enter en de spatiebalk en keer de richting om met Shift+Tab. Controleer of de focus zichtbaar blijft en niet door een klevend gebied wordt bedekt.

Gebruik de skiplink, open en sluit menu's, sluit een dialoogvenster met Escape en controleer waar de focus terugkeert. Zoek naar onzichtbare stops in gesloten componenten en naar vallen in ingesloten spelers of kaarten. Schakel op een Mac toetsenbordnavigatie en volledige tabnavigatie in Safari in voordat je overgeslagen bedieningselementen als een paginafout beschouwt.

Vergroot en herschik de pagina

Test bij 200% vergroting zonder tekst of functionaliteit te verliezen. Gebruik daarna een venster van 1280 CSS-pixels breed bij 400% zoom, gelijk aan 320 CSS-pixels beschikbare breedte. Controleer alinea's op horizontaal scrollen, overlapping en afsnijding. Houd elke functie beschikbaar in de smalle lay-out. Pas de waarden voor tekstafstand toe met een hulpmiddel en inspecteer zowel bedieningselementen als hoofdtekst.

Luister naar de structuur en namen

NVDA op Windows gebruikt standaard Insert als NVDA-toets; Caps Lock is een optioneel alternatief. In leesmodus ga je met H langs koppen, met D langs herkenningspunten, met K langs links, met F langs velden, met T langs tabellen en met B langs knoppen. NVDA+F7 opent de elementenlijst. Tab gaat nog steeds langs interactieve bedieningselementen.

Op macOS schakelt Cmd+F5 VoiceOver in en uit. De VO-combinatietoetsen zijn Control+Option; VO+Pijl-rechts leest het volgende item voor en VO+U opent de rotor. Op de iPhone ga je met een veeg naar rechts naar het volgende VoiceOver-item. TalkBack biedt vergelijkbaar lezen met aanraakbediening op Android.

Luister naar een bruikbare paginatitel en een bruikbaar overzicht, duidelijke namen van bedieningselementen, juiste rollen, nuttige afbeeldingsalternatieven en begrijpelijke veldlabels. Bij de betreffende velden moeten de aanduiding dat ze verplicht zijn, toelichtingen en fouten beschikbaar zijn. Open een uitklapbediening en luister of de toestand verandert. Voeg een item toe en luister naar een statuswijziging zonder dat de focus verspringt.

Inspecteer, leg vast en test opnieuw

Het toegankelijkheidspaneel in Chrome en de toegankelijkheidsinspecteur in Firefox tonen berekende rollen, namen en toestanden. Ze helpen achterhalen waarom een label verkeerd is, nog voordat je een schermlezer gebruikt.

Een bruikbaar rapport noemt de locatie, stappen, het waargenomen gedrag, de getroffen gebruikers, het bijbehorende criterium en een voorgestelde oplossing. Bijvoorbeeld: “Nieuwsbriefveld in de voettekst: ga met Tab naar het invoerveld; het wordt zonder label aangekondigd. Schermlezergebruikers en gebruikers van spraakbediening kunnen het doel niet herkennen. Voeg een gekoppeld label E-mailadres toe; controleer 1.3.1, 3.3.2 en 4.1.2.”

Test opnieuw met de methode waarmee je het probleem vond. Veelgebruikte combinaties zijn NVDA met Firefox of Chrome, JAWS met Chrome en VoiceOver met Safari. Testen met mensen die dagelijks hulptechnologie gebruiken, kan belemmeringen aan het licht brengen die een ontwikkelaar bij incidenteel gebruik mist.

Maak een toestandsfout reproduceerbaar

Een rapport voor een uitklapbediening kan een volledige korte test vastleggen:

  1. Gebruik op de broodpagina NVDA met Firefox en ga met Tab naar “Bezorgopties”.
  2. Druk eenmaal op Enter. Het paneel wordt zichtbaar, maar de knop wordt nog steeds als ingeklapt aangekondigd.
  3. Inspecteer de knop: aria-expanded is nog steeds false.

De getroffen gebruiker krijgt te horen dat het zichtbare paneel gesloten blijft. Leg 4.1.2 Naam, rol, waarde (A) vast en stel voor de toestand van de knop bij te werken wanneer het paneel verandert. Herhaal na de oplossing het openen en sluiten met dezelfde toetsen en combinatie. Controleer in beide richtingen of de zichtbaarheid van het paneel overeenkomt met de aangekondigde uitgeklapte toestand; alleen de aanvankelijke ingeklapte toestand inspecteren zou deze fout missen.

Belangrijkste punten

  • Test een volledige taak met toetsenbordbediening in beide richtingen.
  • Controleer vergroting, herschikking en door de gebruiker aangepaste tekstafstand.
  • Luister naar structuur, namen, toestanden, fouten en live-updates.
  • Gebruik de toegankelijkheidsboom om berekende informatie te achterhalen.
  • Leg reproduceerbare bevindingen vast en test de oplossing opnieuw met dezelfde methode.
  • Betrek waar mogelijk dagelijkse gebruikers van hulptechnologie bij het testen.

Toegankelijke webpagina's: voorbeelden

6 Walkthroughs

1

Maak een pagina die zichzelf uitlegt

12 stappen
Maak van een bakkerijpagina een betekenisvol overzicht met bruikbare bedieningselementen en een gegevenstabel.
  1. 1
    IntroductieLees de pagina via de code

    Een bakkerijpagina ziet er duidelijk uit: een grote titel, een menu, enkele vetgedrukte sectienamen en een bedieningselement om op te slaan. Controleer nu of de code dezelfde betekenissen uitdrukt, want schermlezers gebruiken de toegankelijkheidsboom die de browser eruit opbouwt, niet het uiterlijk. Je volgt de interpretatie van de browser, bouwt een koppenoverzicht en kiest ingebouwde bedieningselementen die zonder muis werken.

  2. 2
    UitlegZoek de rol, naam en toestand

    De browser leidt een toegankelijkheidsboom af uit het HTML-document. De rol van een bedieningselement zegt wat het is, de naam duidt het aan en de toestand zegt in welke toestand het verkeert.

    Een aangevinkt selectievakje “Aanbiedingen per e-mail” heeft alle drie nodig. Schermlezers gebruiken deze informatie voor spraak of braille; visuele vormgeving alleen kan die niet betrouwbaar bieden.

  3. 3
    VoorbeeldHerstel een bedieningselement om op te slaan

    De pagina gebruikt een aanklikbare div. Die ziet eruit als een knop, maar heeft geen ingebouwde knoprol, tabstop of activering met Enter of de spatiebalk.

    Vervang die door:

    <button type="button">Save</button>
    

    De tekst levert de naam en het element levert knopgedrag. Gebruik Tab om de knop te bereiken en daarna Enter en de spatiebalk om de activering te controleren. Geef de knop vorm met CSS om het bedoelde uiterlijk te behouden; je hoeft die niet opnieuw te bouwen als generieke container.

  4. 4
    UitdagingKies de volgende controle

    De knop Opslaan werkt met een muis. Een ontwikkelaar zegt dat dit ook bewijst dat de knop met een toetsenbord bereikbaar is. Wat moet je doen?

    ---reveal---

    Bereik de knop met Tab en activeer die met Enter en de spatiebalk. Activering met de muis test slechts één route. Een ingebouwde knop biedt dit toetsenbordgedrag, terwijl een aanklikbaar generiek element het nog steeds kan blokkeren.

  5. 5
    VoorbeeldGeef de pagina een identiteit

    Begin met het aanduiden van de taal en het paginaonderwerp:

    <html lang="en-US">
    <head>
      <title>Choose a cake – Green Leaf Bakery</title>
    </head>
    

    De taal ondersteunt de uitspraak. De titel onderscheidt deze pagina van andere tabbladen van de bakkerij en is beschikbaar in aankondigingen van schermlezers.

    Plaats de hoofdinhoud in één zichtbaar main-gebied. Taal, titel en hoofdinhoudsgebied beantwoorden verschillende vragen: hoe lees je de pagina, welke pagina is het en waar begint de inhoud?

  6. 6
    VoorbeeldMaak koppen van sectienamen

    De pagina bevat een onderwerp, twee secties en één smaak binnen een sectie. Leg die relaties vast:

    <h1>Choose a cake</h1>
    <h2>Sizes</h2>
    <h2>Flavors</h2>
    <h3>Lemon</h3>
    

    Een luisteraar kan nu kopnavigatie gebruiken om het juiste niveau te bereiken. Lees alleen deze kopnamen op volgorde: ze moeten nog steeds het overzicht van de pagina beschrijven. Stel de visuele lettergroottes met CSS in nadat je de niveaus hebt gekozen, zodat een kleiner ogende hoofdsectie nog steeds een h2 kan zijn.

  7. 7
    UitdagingHoud het overzicht betekenisvol

    “Afhaalgegevens” is een hoofdsectie, maar h4 heeft toevallig de gewenste lettergrootte. Welke opmaakcode moet je gebruiken?

    ---reveal---

    Gebruik h2 voor die hoofdsectie en geef de lettergrootte vorm. Kopniveaus drukken relaties tussen secties uit. h4 kiezen vanwege het uiterlijk zou in het overzicht ontbrekende tussengelegen secties suggereren.

  8. 8
    TipControleer de route door de bron

    Lees de koppen als lijst en inspecteer de HTML-volgorde. Flexvolgorde kan een aanmeldlink visueel naar het begin verplaatsen terwijl die in de DOM als laatste blijft staan.

    Verplaats de link in de HTML als dat de betekenisvolle positie is. Gebruik echte lijstelementen voor gegroepeerde links, zodat de browser zowel de groepering als de grootte ervan beschikbaar kan maken.

  9. 9
    UitlegKies wat het bedieningselement belooft

    “Cursussen bekijken” gaat naar een andere pagina, dus gebruik een anker met href. “Filters tonen” verandert de huidige pagina, dus gebruik een knop.

    Een link activeer je met Enter; een knop met Enter of de spatiebalk. Stel binnen een formulier type="button" in op Filters tonen, zodat de knop het formulier niet per ongeluk verzendt.

  10. 10
    VoorbeeldKoppel openingstijden aan kopcellen

    Openingstijden hebben relaties over rijen en kolommen. Leg een kleine tabel vast:

    <table>
      <caption>Opening hours</caption>
      <tr><th scope="col">Day</th><th scope="col">Opens</th></tr>
      <tr><th scope="row">Friday</th><td>08:00</td></tr>
    </table>
    

    Het tabelbijschrift geeft de tabel een naam. Iemand die naar 08.00 uur gaat, kan de rij Friday en de kolom Opens horen. De kopcellen en hun toepassingsbereik leveren die context; gewone boxen in rijen plaatsen zou die niet vastleggen.

  11. 11
    UitdagingBeoordeel een kleine paginawijziging

    Een nieuwe link “Nu bestellen” gaat naar /order. De tabel met openingstijden wordt opnieuw opgebouwd met div-boxen en de titel blijft een vetgedrukte alinea. Wat moet ingebouwde HTML blijven?

    ---reveal---

    Behoud de bestemming als anker met href en behoud de openingstijden als echte tabel met een tabelbijschrift en kopcellen met toepassingsbereik. Vetgedrukte vormgeving kan geen tabelbijschrift of relaties tussen kopcellen en gegevenscellen bieden.

  12. 12
    SamenvattingInspecteer betekenis vóór uiterlijk

    Controleer de rol- en naaminformatie, taal, titel, herkenningspunten, koppen en bronvolgorde van de pagina. Controleer daarna links, knoppen, ingebouwde bedieningselementen en tabelrelaties. Een koppenoverzicht van een schermlezer en een korte toetsenbordroute bieden twee praktische manieren om te zien of de structuur werkt.

2

Kies het juiste alternatief

10 stappen
Geef foto's, pictogrammen en media van de bakkerij equivalenten die hun doel behouden.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieVraag je af wat zou ontbreken
  2. 2
    UitlegBepaal of de foto informeert
  3. 3
    VoorbeeldGeef een afbeeldingslink een naam op basis van de bestemming
  4. 4
    VoorbeeldMaak een grafiek beschikbaar in tekst
  5. 5
    UitdagingBeschrijf de functie van een knop
  6. 6
    VoorbeeldHoud één bruikbare knopnaam
  7. 7
    UitlegKoppel spraak en geluid aan het afspelen
  8. 8
    UitlegBied de ontbrekende visuele informatie
  9. 9
    UitdagingMaak de media-alternatieven compleet
  10. 10
    SamenvattingKies op basis van doel en medium
3

Volg de focus tijdens een winkeltaak

13 stappen
Test toetsenbordvolgorde, zichtbare focus, skiplinks en een ingebouwd dialoogvenster.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieVolg de positie van de gebruiker
  2. 2
    UitlegGebruik de ingebouwde toetsenbordroute
  3. 3
    VoorbeeldVerwijder onzichtbare stops
  4. 4
    UitdagingHerstel de route
  5. 5
    VoorbeeldHerstel een duidelijke ring
  6. 6
    VoorbeeldKijk onder het klevende kopgebied
  7. 7
    UitdagingMeet een klein doel
  8. 8
    VoorbeeldVoeg de omleidingsroute toe
  9. 9
    UitdagingTest de skiplink zelf
  10. 10
    VoorbeeldOpen het ingebouwde dialoogvenster
  11. 11
    TipBehoud een bruikbare plek na verwijdering
  12. 12
    UitdagingVerbind focus en zichtbaarheid
  13. 13
    SamenvattingHerhaal de volledige interactie
4

Controleer een leesbare bakkerijpagina

12 stappen
Meet contrast, voeg kleuronafhankelijke aanwijzingen toe en test vergrote lay-outs.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieTest drie soorten leesbaarheid
  2. 2
    UitlegKies de drempel vóór het meten
  3. 3
    VoorbeeldVergelijk een kleur dicht bij de drempel
  4. 4
    UitdagingControleer twee toepassingen van één kleur
  5. 5
    UitlegVoeg betekenis toe naast kleur
  6. 6
    UitdagingControleer de reeksen van een grafiek
  7. 7
    VoorbeeldZoek de container die inhoud afsnijdt
  8. 8
    VoorbeeldMaak de effectieve weergave smaller
  9. 9
    TipPas tekstafstand toe zoals een gebruiker dat zou doen
  10. 10
    UitdagingHerstel de smalle lay-out
  11. 11
    VerbandCombineer de controles
  12. 12
    SamenvattingHoud dezelfde informatie beschikbaar
5

Help een klant een bestelling af te maken

13 stappen
Maak gekoppelde formulierinstructies, herstel fouten en kondig wijzigingen in de winkelwagen aan.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieVolg de hele formuliertaak
  2. 2
    VoorbeeldKoppel het e-maillabel
  3. 3
    VoorbeeldGeef de gezamenlijke vraag
  4. 4
    UitdagingHerstel een verschil met de zichtbare naam
  5. 5
    UitlegGeef de toelichting vóór de fout
  6. 6
    VoorbeeldOndersteun invoerhulpmiddelen
  7. 7
    UitdagingNeem een antwoord mee
  8. 8
    VoorbeeldDuid een afgekeurd veld aan
  9. 9
    VoorbeeldGeef toegang tot meerdere fouten op één plek
  10. 10
    UitdagingKondig het resultaat in de winkelwagen aan
  11. 11
    VerbandControleer vóór de definitieve bestelling
  12. 12
    UitdagingVerbind foutherstel met invoerinspanning
  13. 13
    SamenvattingControleer labels, instructies en feedback
6

Controleer de zichtbare en gesproken interface

16 stappen
Herstel ARIA-namen en -toestanden, interpreteer een scan en schrijf een reproduceerbare handmatige bevinding.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieVergelijk wat de pagina meldt
  2. 2
    UitlegControleer wat ARIA kan veranderen
  3. 3
    VoorbeeldAchterhaal een verrassende naam
  4. 4
    UitdagingBehoud twee betekenissen
  5. 5
    VoorbeeldLaat een toestand overeenkomen met het paneel
  6. 6
    KernpuntHoud het label van een schakelknop gelijk
  7. 7
    UitdagingKies de paginatoestand
  8. 8
    UitlegLees de scan als bewijs
  9. 9
    VoorbeeldHerstel de gedeelde bron
  10. 10
    UitdagingInterpreteer een resultaat zonder fouten
  11. 11
    VoorbeeldDoorloop de handmatige route
  12. 12
    VoorbeeldLuister naar namen en structuur
  13. 13
    VoorbeeldSchrijf een reproduceerbare bevinding
  14. 14
    UitdagingKies de hertest
  15. 15
    UitdagingRond de gecombineerde beoordeling af
  16. 16
    SamenvattingControleer elk soort belofte

Toegankelijke webpagina's: oefenvragen

50 Oefenvragen in 5 sets

Set 1: Kies een duidelijke structuur en ingebouwde bedieningselementen10 Oefenvragen

Vraag 1 van 10

Het bedieningselement “Recept opslaan” van een bakkerij is een ingebouwde knop. Welke twee toetsen moeten de knop activeren?
  1. Tab en Shift+Tab.
  2. Enter en de spatiebalk.
  3. Enter en Shift+Tab.
  4. De spatiebalk en Escape.
Toon antwoordVerberg antwoord
Antwoord: B
Enter en de spatiebalk activeren een ingebouwde knop. Tab en Shift+Tab verplaatsen de focus tussen bedieningselementen; ze voeren de actie van de knop niet uit. Dit verwachte gedrag is een reden om een ingebouwde knop te kiezen in plaats van een aanklikbaar generiek element te bouwen.

Vraag 2 van 10

Een pagina heeft een h1 met de naam “Broodcursussen” en een h2 met de naam “Weekendcursussen”. Welk kopniveau past bij “Beginners op zondag”, een onderdeel van Weekendcursussen?
  1. h2, met de lettergrootte ingesteld in CSS.
  2. h4, om te tonen dat het een kleinere kop is.
  3. h3, met de lettergrootte ingesteld in CSS.
  4. p, vetgedrukt om het overzicht te behouden.
Toon antwoordVerberg antwoord
Antwoord: C
Een onderdeel van een h2-sectie hoort op h3-niveau. Het kopniveau drukt de plaats in het overzicht uit, terwijl CSS de grootte bepaalt. h4 kiezen alleen omdat die kleiner lijkt, slaat een niveau over in plaats van de paginastructuur te beschrijven.

Vraag 3 van 10

Welk HTML-element past bij een bedieningselement dat de gebruiker naar de pagina /delivery van de bakkerij brengt?
  1. Een anker met href="/delivery".
  2. Een knop met type="button".
  3. Een anker zonder href.
  4. Een summary binnen een details-element.
Toon antwoordVerberg antwoord
Antwoord: A
Een anker met href staat voor navigatie naar een bestemming en ondersteunt normale linkactivering. Een knop staat voor een actie, dus die zou hier een andere rol geven dan bij het gedrag hoort. Een anker zonder href biedt geen gewone link die met het toetsenbord focus kan krijgen.

Vraag 4 van 10

Een broodfoto en de zichtbare woorden “Olive loaf” staan in dezelfde productlink. De foto voegt geen informatie toe behalve de aanduiding van dat product. Welke alternatieve tekst past bij de foto?
  1. alt="Olive loaf".
  2. alt="Product image".
  3. Geen alt-attribuut.
  4. alt="".
Toon antwoordVerberg antwoord
Antwoord: D
Met lege alternatieve tekst geven de zichtbare woorden de link één keer een naam, zonder herhaling van de productnaam. Alt weglaten is anders: een schermlezer kan dan de bestandsnaam aankondigen. De keuze volgt uit het doel van deze foto binnen deze link, waar het product al door tekst wordt aangeduid.

Vraag 5 van 10

Een opgenomen interview met een bakkerij wordt alleen als audio aangeboden. Welk tekstalternatief is nodig?
  1. Een gesynchroniseerd ondertitelingsspoor voor video.
  2. Een beschrijving van de omslagfoto.
  3. Een titel die het interviewonderwerp noemt.
  4. Een transcript van de opname.
Toon antwoordVerberg antwoord
Antwoord: D
Inhoud met alleen audio heeft een transcript nodig, zodat de informatie als tekst beschikbaar is. Ondertiteling voor doven en slechthorenden is gesynchroniseerd met het afspelen van video en beschrijft niet het afzonderlijke tekstalternatief dat hier nodig is. Het onderwerp noemen duidt de opname aan, maar brengt de werkelijke inhoud niet over.

Vraag 6 van 10

Tab bereikt links in een mobiel menu dat gesloten lijkt doordat het opacity: 0 heeft. Wat moet veranderen zolang het menu gesloten is?
  1. Voeg aria-hidden="true" toe aan het gebied.
  2. Geef elke link tabindex="0".
  3. Verberg het gebied met hidden.
  4. Verplaats het gebied verder buiten beeld.
Toon antwoordVerberg antwoord
Antwoord: C
Het hidden-attribuut verwijdert het gesloten gebied zowel uit beeld als uit de toetsenbordroute. Transparantie of plaatsing buiten beeld verandert het uiterlijk zonder de stops te verwijderen. Alleen verbergen met ARIA verwijdert het gebied uit de toegankelijkheidsboom, maar toetsenbordgebruikers kunnen nog steeds focus op de links zetten.

Vraag 7 van 10

Een controlehulpmiddel geeft een kleurenpaar een verhouding van 4,49:1. Voldoet dit aan AA voor normale hoofdtekst van 16 CSS-pixels?
  1. Nee; normale tekst heeft minstens 4,5:1 nodig.
  2. Ja; afronden op één decimaal geeft 4,5.
  3. Ja; normale hoofdtekst heeft maar 3:1 nodig.
  4. Nee; alle hoofdtekst moet op AA 7:1 halen.
Toon antwoordVerberg antwoord
Antwoord: A
Normale tekst heeft minstens 4,5:1 nodig en 4,49 ligt onder dat exacte minimum. De weergegeven verhouding afronden op 4,5 kan het paar niet laten voldoen. De drempel van 3:1 geldt voor grote tekst, terwijl 7:1 het AAA-minimum voor normale tekst is.

Vraag 8 van 10

De opmaakcode is <label for="buyer-email">Email address</label><input id="email" name="buyer-email" type="email">. Wat herstelt de labelkoppeling direct?
  1. Verander het invoertype in gewone tekst.
  2. Verander de ID van het invoerveld in buyer-email.
  3. Verander de labeltekst in buyer-email.
  4. Verander de name van het invoerveld in email.
Toon antwoordVerberg antwoord
Antwoord: B
De for-waarde van het label moet overeenkomen met de unieke ID van het invoerveld, dus door die ID te veranderen koppel je dit paar. Het name-attribuut duidt verzonden gegevens aan en kan de ID-relatie niet vervangen. De zichtbare woorden kunnen “Email address” blijven, omdat ze het doel van het veld duidelijk beschrijven.

Vraag 9 van 10

Een kop “Ingredients” heeft role="button", tabindex="0" en aria-label="Expand". Muisklikken klappen inhoud uit, maar de spatiebalk doet niets en kopnavigatie slaat de kop over. Welke structuur herstelt kopnavigatie, knoptoetsen en het verschil met de zichtbare naam?
  1. Een ingebouwde knop Ingredients binnen de h2, met behoud van aria-label="Expand".
  2. De bestaande knoprol op de h2, met aria-label veranderd in “Ingredients”.
  3. Een benoemd anker Ingredients binnen de h2, met href="#" en de klikafhandeling.
  4. Een ingebouwde knop Ingredients binnen de h2, zonder de naamoverschrijving Expand.
Toon antwoordVerberg antwoord
Antwoord: D
Door de h2 te behouden en er een ingebouwde knop in te nesten, behoud je kopnavigatie en bied je activering met Enter en de spatiebalk. Door de zichtbare tekst Ingredients de knop een naam te laten geven, herstel je ook de relatie met de zichtbare naam. Een geneste knop die aria-label="Expand" behoudt, herstelt de structuur en toetsen, maar geeft gebruikers van spraakbediening nog steeds een naam zonder de woorden die ze zien.

Vraag 10 van 10

Een controlehulpmiddel meldt een ontbrekend label in een voettekst die op 12 bakkerijpagina's wordt hergebruikt. Het markeert ook vetgedrukte tekst voor beoordeling als kop. Hoe moet de ontwikkelaar beide bevindingen behandelen?
  1. Herstel het gedeelde label en onderzoek het doel van de vetgedrukte tekst.
  2. Herstel elke voettekst apart en maak van alle vetgedrukte tekst een h2.
  3. Label het veld met een plaatsaanduiding en negeer de beoordelingsmelding.
  4. Onderdruk beide bevindingen tot een schermlezer een fout meldt.
Toon antwoordVerberg antwoord
Antwoord: A
Door de gedeelde voettekst te herstellen, los je de oorzaak op voor alle pagina's die deze gebruiken. De melding over een mogelijke kop vereist onderzoek, omdat vetgedrukte tekst een sectiekop of gewone nadruk kan zijn. Automatisch van alle vetgedrukte tekst koppen maken zou onjuiste secties maken in plaats van de melding op basis van een oordeel op te lossen.
Set 2: Houd focus, instructies en toestand duidelijk10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Waar moet de hoofdtaal van de pagina worden opgegeven?
  1. In name op het body-element.
  2. In aria-label op de hoofdkop.
  3. In title op het navigatie-element.
  4. In lang op het html-element.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een receptenpagina gebruikt een foto alleen als decoratieve rand. Welk afbeeldingsalternatief past bij dit doel?
  1. Een leeg alt-attribuut.
  2. Een zin die elke decoratie beschrijft.
  3. De recepttitel herhaald als alternatieve tekst.
  4. De oorspronkelijke bestandsnaam van de foto.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een afrekenknop met focus heeft een duidelijke omtreklijn, maar een klevende cookiebanner bedekt de knop volledig. Aan welke AA-eis is nog niet voldaan?
  1. Focus zichtbaar.
  2. Grootte van het doelgebied (minimum).
  3. Focus niet bedekt (minimum).
  4. Focusweergave.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een skiplink staat als eerste in de bron maar gebruikt display: none. De bestemming is een main-gebied zonder ID. Welke oplossing biedt een bruikbare route zonder main aan elke tabvolgorde toe te voegen?
  1. Houd de link focusbaar; verwijs naar main via een ID met tabindex nul.
  2. Behoud display none; verwijs naar main via een ID met tabindex min één.
  3. Houd de link focusbaar; verwijs naar main via een ID met tabindex min één.
  4. Houd de link focusbaar; duid het doel alleen met een klassenaam aan.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een bakkerij toont een rode stip voor “Gesloten” en een groene stip voor “Open”, zonder andere statusaanwijzing. Welke directe verandering maakt de betekenis beschikbaar zonder kleuren te onderscheiden?
  1. Verhoog de verzadiging van beide stipkleuren.
  2. Maak beide stippen groter met gelijke binnenruimte.
  3. Voeg “Gesloten” of “Open” toe naast elke stip.
  4. Gebruik twee kleuren met sterker contrast met de achtergrond.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Bij 200% tekstgrootte snijdt een receptenkaart met vaste hoogte de laatste regels af. Welke CSS-verandering pakt de oorzaak aan?
  1. Behoud de hoogte en verklein het lettertype.
  2. Behoud de hoogte en verberg overlopende inhoud.
  3. Behoud de hoogte en verplaats regels buiten beeld.
  4. Laat de hoogte meegroeien met de inhoud.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een wachtwoordveld heeft een zichtbaar label en de nabijgelegen toelichting “Minstens 12 tekens” met id="pw-help". Welk attribuut koppelt die toelichting als beschrijving?
  1. aria-labelledby="pw-help".
  2. aria-describedby="pw-help".
  3. autocomplete="pw-help".
  4. aria-label="pw-help".
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Na een mislukte bestelvalidatie wist het formulier alle waarden. Het e-mailveld behoudt aria-invalid="false" en het aria-describedby verwijst alleen naar een oude toelichting, hoewel er een nieuwe foutalinea is. Welke oplossing biedt een volledige route voor correctie?
  1. Behoud waarden, markeer het e-mailveld als ongeldig en verwijs naar beide ID's.
  2. Behoud waarden en verwijs naar beide ID's, maar houd de ongeldige toestand op false.
  3. Wis waarden, markeer het e-mailveld als ongeldig en vervang het label door de fouttekst.
  4. Behoud waarden en markeer het e-mailveld als ongeldig, maar koppel de fout niet.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Welk attribuut duidt in een navigatielijst de link aan naar de pagina die momenteel open is?
  1. aria-selected="true".
  2. aria-current="page".
  3. aria-pressed="true".
  4. aria-expanded="true".
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een menu wordt bij het laden correct aangekondigd. Na het openen zijn de links niet met Tab bereikbaar, hoewel het paneel zichtbaar is en expanded op true staat. Welk controleplan vindt de resterende belemmering het best?
  1. Voer alleen de eerste scan opnieuw uit en accepteer de correcte knopnaam.
  2. Verander de aangekondigde toestand in false en houd het paneel zichtbaar.
  3. Voeg labels toe aan de links en beschouw het open paneel als gecontroleerd.
  4. Test de toetsenbordroute bij het open menu en inspecteer de weergegeven toestand van de links.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 3: Pas de regels toe op werkelijke paginatoestanden10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een formulier bevat een knop “Notitie toevoegen” die een optioneel paneel opent, maar een klik erop verzendt de bestelling. Welk ingebouwd attribuut voorkomt die verzending direct?
  1. type="button" op de knop.
  2. aria-expanded="false" op de knop.
  3. role="button" op de knop.
  4. tabindex="-1" op de knop.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een vooraf opgenomen kneedvideo heeft correcte ondertiteling van de spraak. De video toont zonder woorden de deegstructuur die aangeeft dat het kneden klaar is. De speler heeft ingebouwde afspeelbediening. Welke toevoeging verhelpt het resterende mediaprobleem op AA?
  1. Een dialoogtranscript dat de ondertiteling herhaalt.
  2. Een toegankelijk label dat de afspeelknop opnieuw benoemt.
  3. Audiodescriptie van de belangrijke aanwijzing in de deegstructuur.
  4. Dialoogondertiteling in dezelfde taal als de aanwezige spraak.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een groep voor bezorgkeuzes gebruikt ingebouwde keuzerondjes. Hoe verandert een toetsenbordgebruiker normaal de geselecteerde keuze na het binnengaan van de groep?
  1. Druk voor elke keuze afzonderlijk op Tab.
  2. Druk op Escape om de volgende keuze te selecteren.
  3. Druk op de spatiebalk om naar de volgende formuliergroep te gaan.
  4. Gebruik de pijltoetsen tussen de keuzes.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een werkbalk heeft twee vierkante pictogramknoppen in één horizontale rij. Er geldt geen uitzondering voor doelen binnen een zin, gelijkwaardige bedieningselementen of iets anders, behalve mogelijk voor de tussenruimte. Welk ontwerp voldoet aan Grootte van het doelgebied (minimum) op AA?
  1. Beide doelen zijn 16 px in het vierkant met 6 px tussenruimte tussen de randen.
  2. Beide doelen zijn 16 px in het vierkant met 10 px tussenruimte tussen de randen.
  3. Beide doelen zijn 22 px in het vierkant met 1 px tussenruimte tussen de randen.
  4. Eén doel is 24 px en het andere 16 px in het vierkant, met 2 px tussenruimte.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een paneel gebruikt hetzelfde kleurenpaar met 3,60:1 voor normale tekst van 22 px en een rand die nodig is om het invoerveld te herkennen. Hoe moeten de twee toepassingen op AA worden beoordeeld?
  1. De tekst voldoet; de invoerveldrand voldoet niet.
  2. De tekst voldoet niet; de invoerveldrand voldoet.
  3. Beide voldoen omdat de verhouding boven 3:1 ligt.
  4. Beide voldoen niet omdat elk onderdeel 4,5:1 vereist.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Welke lettereenheid volgt direct de lettergrootte van het hoofdelement en helpt de standaardtekstinstelling van de gebruiker te volgen?
  1. rem.
  2. px.
  3. vh.
  4. vw.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Meerdere selectievakjes beantwoorden “In welke broodsoorten ben je geïnteresseerd?”. Elk selectievakje heeft al een eigen label. Welke opmaakcode voegt de gezamenlijke vraag programmatisch toe?
  1. Een alinea boven een verder generieke container.
  2. Een plaatsaanduiding die in elk selectievakje wordt herhaald.
  3. Een gedeelde ID die aan alle selectievakjes wordt toegekend.
  4. Een fieldset met die vraag in de legend.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een verplicht veld heeft al een correct label en een zichtbare toelichting met ID “hint”. De ingevoerde waarde voldoet niet aan een controle en een specifieke foutmelding heeft ID “err”. De waarde moet beschikbaar blijven en beide beschrijvingen moeten worden gehoord. Welke wijziging voldoet aan alle drie de eisen?
  1. Behoud de waarde; stel aria-invalid in op false en gebruik aria-describedby="hint err".
  2. Wis de waarde; stel aria-invalid in op true en gebruik aria-describedby="hint err".
  3. Behoud de waarde; stel aria-invalid in op true en gebruik aria-describedby="hint err".
  4. Behoud de waarde; stel aria-invalid in op true en gebruik aria-labelledby="hint err".
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een knop heeft de tekst “Back”, aria-label="Return" en aria-labelledby="previous-title". De kop waarnaar wordt verwezen zegt “Previous step”. Welke naam kan de ontwikkelaar bij inspectie verwachten?
  1. “Return”.
  2. “Back”.
  3. “Back Return”.
  4. “Previous step”.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een scan markeert een decoratieve scheidingsafbeelding omdat alt ontbreekt. Welke oplossing past bij het werkelijke doel van de afbeelding?
  1. Voeg alt="Divider image" toe om die te beschrijven.
  2. Gebruik de bestandsnaam van de afbeelding als alt.
  3. Voeg alt="" toe om de scheiding over te slaan.
  4. Verplaats de beschrijving naar het title-attribuut.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 4: Spoor belemmeringen op tijdens een interactie10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

De hoofdnavigatie staat visueel vooraan, maar CSS verplaatst die vanaf het einde van de DOM. Er is ook kruimelpadnavigatie en beide gebieden hebben de naam “Links”. Welke oplossing maakt zowel de route als de keuze tussen gebieden duidelijker?
  1. Behoud de bronvolgorde en geef elke navigatielink een positieve tabindex.
  2. Behoud beide namen en verwijder het kruimelpadgebied met aria-hidden uit de spraak.
  3. Zet de hoofdnavigatie op een betekenisvolle plek in de bronvolgorde en geef de gebieden verschillende namen.
  4. Zet de rol navigation op elke link en keer de visuele volgorde om met CSS.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een bakkerij gebruikt dezelfde broodfoto op een productpagina en een pagina over het oplossen van problemen met te donker gebakken korsten. Waarom kan de alternatieve tekst verschillen?
  1. Een hergebruikt bestand moet steeds een andere afbeeldingsrol hebben.
  2. De relevante informatie verandert met het doel van de pagina.
  3. Alternatieve tekst moet op beide plekken elk zichtbaar kenmerk noemen.
  4. De browser maakt uit elke paginatitel een nieuw alternatief.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een knop van een winkelwagenitem opent een ingebouwd bevestigingsvenster. Bevestigen verwijdert het laatste item en het element dat het venster opende, en sluit daarna het venster. De kop van de winkelwagen blijft staan maar is normaal niet focusbaar. Welk plan behoudt modaal gedrag en een bruikbare plek na bevestiging?
  1. Open met showModal; vertrouw op automatische terugkeer naar het verwijderde openingselement.
  2. Open met een bovenliggende div-laag; scrol na het sluiten naar de winkelwagenkop.
  3. Open met showModal; voeg na het sluiten aria-live toe aan de winkelwagenkop zonder focus.
  4. Open met showModal; geef na het sluiten focus aan de winkelwagenkop met tabindex min één.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een wit knoplabel van normale grootte heeft 1,63:1 contrast op een amberkleurige achtergrond. Zwarte tekst op dezelfde achtergrond heeft 12,88:1. Welke directe kleurverandering voldoet aan tekstcontrast op AA?
  1. Gebruik zwart voor het label.
  2. Maak het witte label vet.
  3. Voeg een toegankelijke naam toe.
  4. Vergroot de binnenruimte van de knop.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een link in een alinea is alleen door kleur te onderscheiden. De tekst heeft 5,10:1 contrast met de achtergrond maar slechts 2,20:1 met de omringende tekst. Bij aanwijzen en focus wordt de link onderstreept. Welke eenvoudige oplossing verhelpt de resterende belemmering bij het herkennen van de link?
  1. Houd de onderstreping ook in de normale toestand zichtbaar.
  2. Verwijder de onderstreping bij aanwijzen zodat alle toestanden gelijk zijn.
  3. Behoud de normale toestand omdat het contrast met de achtergrond voldoet.
  4. Voeg een aria-label toe en behoud de visuele vormgeving.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Bij het afrekenen moet de klant zonder veiligheidsreden een nog geldig afleveradres opnieuw typen voor de facturering. Bij het inloggen wordt plakken van het wachtwoord geblokkeerd zonder alternatief dat aan de eisen voldoet. Een veld voor het contact-e-mailadres van een vriend gebruikt het token autocomplete="email" van de klant. Welk plan pakt alle drie de problemen aan?
  1. Bied hergebruik van het adres, houd plakken geblokkeerd en verwijder het verkeerde token voor het e-mailadres van de vriend.
  2. Behoud opnieuw typen van het adres, sta plakken toe en behoud het token voor automatisch invullen bij de vriend.
  3. Bied hergebruik van het adres, sta plakken toe en verander het token van de vriend in username.
  4. Bied hergebruik van het adres, sta plakken toe en verwijder het verkeerde token voor het e-mailadres van de vriend.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Welke ARIA-waarde meldt dat een veld is gecontroleerd en een fout bevat?
  1. aria-required="false".
  2. aria-invalid="true".
  3. aria-pressed="true".
  4. aria-current="page".
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Drie bedieningselementen komen niet overeen met hun gedrag: een open menu meldt expanded false; Dempen verandert in Dempen opheffen terwijl pressed true wordt; een bestelknop met aria-disabled verzendt nog steeds. Het team wil een schakelknop Dempen met ingedrukte toestand en een focusbare niet-beschikbare bestelknop. Welke oplossing past?
  1. Meld het menu als open, behoud het veranderende label Dempen en blokkeer niet-beschikbare bestelacties met een script.
  2. Meld het menu als open, houd het label Dempen gelijk en vertrouw op aria-disabled om verzending te blokkeren.
  3. Meld het menu als open, houd het label Dempen gelijk en blokkeer niet-beschikbare bestelacties met een script.
  4. Meld het menu als open, houd het label Dempen gelijk en gebruik het ingebouwde disabled op de bestelknop.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een ontbrekende naam is hersteld in een gedeelde bestelknop. De berekende naam lijkt nu correct. Welke hertest controleert de oorspronkelijke schermlezerfout en de actie samen het best?
  1. Accepteer de berekende naam en herhaal alleen de eerste geautomatiseerde score.
  2. Gebruik dezelfde schermlezerroute, hoor de naam en activeer de knop.
  3. Test alleen met een muis omdat de naam van het element nu aanwezig is.
  4. Controleer een schermafbeelding van de knop en tel de resterende scanwaarschuwingen.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een knop gebruikt aria-disabled="true", maar een klik erop plaatst nog steeds een bestelling. Welk gedrag ontbreekt als het bedieningselement focusbaar moet blijven?
  1. De ARIA-waarde moet naar de dichtstbijzijnde kop worden verplaatst.
  2. De knop moet ook een positieve tabindex-waarde krijgen.
  3. Een nieuw aria-label moet “Niet beschikbaar” zeggen in plaats van de actie.
  4. Een script moet de actie voorkomen zolang de knop niet beschikbaar is.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 5: Beoordeel een pagina via verschillende toegangsroutes10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een rapport controleert meerdere AA-succescriteria maar geen criteria van niveau A. Kan daarmee worden vastgesteld dat aan WCAG 2.2 AA is voldaan?
  1. Ja; AA vervangt de criteria van het lagere niveau.
  2. Ja; de website gebruikt een schermlezer met succes.
  3. Nee; ook aan elk AAA-criterium moet zijn voldaan.
  4. Nee; aan alle A- en AA-criteria moet zijn voldaan.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een ingebouwde knop toont “Zoek brood” naast een verborgen decoratieve SVG. Het aria-label is “Zoek brood”, maar aria-labelledby verwijst naar een kop met “Filters”. Welke naam wordt berekend en welke oplossing behoudt de zichtbare naam en verbergt de decoratie?
  1. “Filters”; verwijder alleen aria-label en behoud de verwijzing naar de kop.
  2. “Filters”; verwijder de naamoverschrijvingen en houd de SVG verborgen.
  3. “Zoek brood”; behoud beide naamoverschrijvingen en toon de SVG.
  4. “Zoek brood”; verwijder alleen de verwijzing naar de kop en houd de SVG verborgen.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een afrekenpagina heeft onnodige tabstops op koppen, een focusroute die tegen de met CSS herordende velden in springt en een verzend-div die alleen met de muis werkt. Welk plan herstelt alle drie de problemen?
  1. Verwijder kopstops, herstel de bronvolgorde en gebruik een ingebouwde verzendknop.
  2. Verwijder kopstops, behoud de volgorde met alleen CSS en gebruik een ingebouwde verzendknop.
  3. Behoud kopstops, herstel de bronvolgorde en gebruik een ingebouwde verzendknop.
  4. Verwijder kopstops, herstel de bronvolgorde en voeg alleen een rol en tabindex toe aan Verzenden.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een kleine receptenlink staat binnen een gewone zin. Moet het doel binnen de zin specifiek om aan 2.5.8 te voldoen met binnenruimte worden vergroot tot 24 bij 24 CSS-pixels?
  1. Ja; het minimum geldt zonder uitzonderingen.
  2. Nee; linktekst is ook uitgezonderd van tekstcontrast.
  3. Nee; links in zinnen hebben een uitzondering voor doelen binnen tekst.
  4. Ja; alle links vereisen 44 bij 44 CSS-pixels op AA.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Bij het verwijderen van het laatste winkelwagenitem verdwijnt de bijbehorende verwijderknop met focus. De focus valt terug naar het begin van de pagina; de winkelwagenkop is normaal niet focusbaar. Welke oplossing behoudt een bruikbare plek zonder nog een gewone tabstop toe te voegen?
  1. Geef de kop tabindex nul en geef die na verwijdering focus.
  2. Geef de kop tabindex min één en scrol die alleen in beeld.
  3. Geef de kop tabindex min één en geef die na verwijdering focus.
  4. Laat de kop zonder tabindex en scrol die alleen in beeld.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Bij 400% zoom in een venster van 1280 CSS-pixels breed scrollen alinea's horizontaal en verdwijnen afhaalinstructies. Een brede gegevenstabel scrolt ook horizontaal. Welke oplossing is nodig voor gewone inhoud, rekening houdend met de uitzondering voor de tabel?
  1. Laat alinea's en de tabel horizontaal scrollen; behoud de afhaalinstructies.
  2. Herschik alinea's en behoud afhaalinstructies; de tabel mag twee dimensies behouden.
  3. Herschik alinea's en behoud de tabel; verwijder afhaalinstructies om ruimte te maken.
  4. Herschik alinea's en behoud instructies; snijd de laatste tabelkolom af zodat die past.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een veld verzamelt het telefoonnummer van een klant, inclusief een mogelijke voorloopnul. Welk invoertype past bij die gegevens zonder te doen alsof het formaat wordt gevalideerd?
  1. type="number".
  2. type="email".
  3. type="url".
  4. type="tel".
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een verplicht veld voor het e-mailadres van de gebruiker heeft alleen een plaatsaanduiding, geen label, geen autocomplete-token en geen zichtbare markering dat het verplicht is. Welke compacte oplossing omvat naamgeving, doel en verplichting?
  1. Voeg een gekoppeld zichtbaar label met verplicht toe, ingebouwd required en autocomplete email.
  2. Voeg een gekoppeld zichtbaar label met verplicht toe, ingebouwd required en autocomplete username.
  3. Voeg een gekoppeld zichtbaar label met verplicht en autocomplete email toe, maar geen required-attribuut.
  4. Voeg een verborgen label, ingebouwd required en autocomplete email toe; houd alleen de plaatsaanduiding zichtbaar.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een paneel bevat links en is visueel verborgen met transparantie, terwijl het bovenliggende element aria-hidden="true" heeft. De toetsenbordfocus gaat nog steeds naar die links. Welke oplossing maakt het gesloten paneel via beide routes onbeschikbaar?
  1. Gebruik hidden of display none zolang het paneel gesloten is.
  2. Behoud de transparantie en verplaats aria-hidden naar elke focusbare link.
  3. Houd het bovenliggende element verborgen voor spraak en label elke link opnieuw.
  4. Laat het bovenliggende element ongewijzigd en geef de links een presentatierol.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Welke VoiceOver-opdracht op macOS opent de rotor wanneer VO Control+Option betekent?
  1. VO+Pijl-rechts.
  2. Cmd+F5.
  3. VO+U.
  4. Shift+Tab.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Kom je niet uit je eigen opgave? Huiswerkhulp

Kernbegrippen

87 Kernbegrippen, elk met een definitie

A

Aanwijzerdoel
Een aanwijzerdoel is het interactieve gebied dat met een aanwijsapparaat wordt geactiveerd, inclusief aanklikbare binnenruimte; de grootte wordt aan dat gebied gemeten, niet alleen aan het pictogram erin.
Binnenruimte maakt de knop van een vierkant pictogram van 16 px in totaal 24 px in het vierkant, waardoor het werkelijke indrukbare gebied groter wordt.
Afbeelding van tekst
Een afbeelding van tekst is een afbeelding met woorden die vaak als echte tekst kunnen worden aangeboden, zodat die gemakkelijker kan worden vergroot, verkleind en herschikt.
Een reclamebanner wordt vervangen door HTML-tekst, zodat “20% korting op al het brood” duidelijk blijft bij vergroting.
Alternatieve tekst
Alternatieve tekst is het tekstalternatief van een afbeelding in het alt-attribuut, dat nuttige informatie of een functie in context overbrengt; zuiver decoratieve afbeeldingen krijgen een lege waarde.
Het alternatief van een zuurdesemfoto beschrijft de korst omdat dat kenmerk op de productpagina van belang is.
Aria-current
Aria-current duidt het huidige item binnen een samenhangende verzameling aan, waarbij de waarde page de link markeert naar de pagina die wordt bekeken.
Een bakkerijwebsite geeft aria-current="page" vorm, zodat dezelfde opmaakcode de zichtbare navigatiemarkering regelt.
Aria-disabled
Aria-disabled meldt dat een bedieningselement niet beschikbaar is terwijl de focusbaarheid en het activeringsgedrag onveranderd blijven; een script moet de actie blokkeren als die uitvoerbaar blijft.
Een focusbare niet-beschikbare bestelknop heeft naast de aangekondigde uitgeschakelde toestand een script nodig om de actie te blokkeren.
ARIA-toestand
Een ARIA-toestand beschrijft de huidige toestand van een object en moet synchroon worden gehouden met veranderingen in de interface.
Bij het openen van het menu verandert zowel de zichtbaarheid van het paneel als de expanded-toestand van de knop naar true.
Audiodescriptie
Audiodescriptie is een gesproken beschrijving van belangrijke visuele informatie die op het geluidsspoor van een video ontbreekt, uitgesproken tijdens pauzes of in een afzonderlijke beschreven versie van de video.
Een bakvideo met audiodescriptie vertelt welke oveninstelling zonder woorden op de temperatuurweergave van de oven verschijnt.
Autocomplete-token
Een autocomplete-token is een gestandaardiseerde attribuutwaarde die het invoerdoel aanduidt voor automatisch invullen door de browser, wachtwoordmanagers en hulpmiddelen.
Het veld voor een bestaand wachtwoord gebruikt autocomplete="current-password", zodat een wachtwoordmanager het kan herkennen.
Axe-core
Axe-core is een engine voor toegankelijkheidstests die wordt gebruikt door hulpmiddelen zoals axe DevTools en door een selectie van Lighthouse-controles.
De ontwikkelaar inspecteert een bevinding van axe om het bedieningselement te vinden waarvan de ARIA-waarde niet bij de rol past.

B

Bedekking van het element met focus
Bedekking van het element met focus ontstaat wanneer andere inhoud de component met focus bedekt, waardoor de huidige toetsenbordpositie moeilijk te zien is.
Een klevende banner bedekt de bestelknop volledig, zodat de manier van scrollen en de plaatsing moeten worden aangepast.
Beschrijvingslijst
Een beschrijvingslijst is een HTML-lijst van termen of namen met bijbehorende beschrijvingen, uitgedrukt met dl-, dt- en dd-elementen.
Een woordenlijst van een bakkerij koppelt elke broodnaam aan de uitleg met een beschrijvingslijst.
Bronvolgorde
Bronvolgorde is de volgorde van elementen in het HTML-document die normaal de lees- en focusvolgorde bepaalt, ook wanneer CSS die elementen naar andere posities verplaatst.
Een aanmeldlink die visueel met flexvolgorde is verplaatst, krijgt nog steeds focus op de oorspronkelijke plaats in de HTML.
Browserzoom
Browserzoom vergroot of verkleint de weergegeven pagina en verandert zowel de effectieve lay-outruimte als de grootte van de inhoud.
Bij 400% zoom biedt een venster van 1280 CSS-pixels breed een effectieve inhoudsbreedte van 320 CSS-pixels.

C

Complexe afbeelding
Een complexe afbeelding is een grafisch element waarvan de gedetailleerde informatie meer nodig heeft dan beknopte alternatieve tekst: naast een korte aanduiding zijn ook uitleg of gelijkwaardige gegevens in de buurt nodig.
Een bezoekersgrafiek heeft een korte alternatieve tekst plus tekst over de ontwikkeling en een tabel met maandwaarden in de buurt.
Contextwijziging
Een contextwijziging is een grote verandering zoals navigatie of het verplaatsen van focus die het begrip van de gebruiker van diens plaats kan verstoren.
Een bestemmingskeuze gebruikt een knop Ga, zodat het selecteren van een waarde niet onverwacht een andere pagina opent.
Contrast van niet-tekstuele content
Contrast van niet-tekstuele content is het verschil dat nodig is om bedieningselementen, hun toestanden of betekenisvolle grafische elementen te herkennen ten opzichte van aangrenzende kleuren, waarvoor op AA normaal minstens 3:1 nodig is.
Een invoerveldrand die nodig is om het veld te vinden, moet 3:1 halen tegenover de aangrenzende witte achtergrond.
Contrastdrempel
Een contrastdrempel is een exacte minimale verhouding voor de betreffende inhoudsklasse; afronding van de weergave kan een lagere verhouding niet laten voldoen.
Een waarde van 2,99:1 voldoet niet aan een eis van 3:1, ook wanneer een weergave op één decimaal 3,0 zou tonen.
Contrastverhouding
Een contrastverhouding vergelijkt de relatieve luminantie van twee kleuren op een schaal van 1:1 tot 21:1; het vereiste minimum hangt af van de vraag of het paar dient voor normale tekst, grote tekst of niet-tekstuele informatie.
Een controlehulpmiddel meldt 4,48:1 voor grijze tekst op wit, wat onder het AA-minimum voor normale tekst ligt.

D

Decoratieve afbeelding
Een decoratieve afbeelding voegt visuele vormgeving toe zonder informatie of een functie bij te dragen, zodat een img-element lege alt moet hebben.
Een rand met een meelpatroon gebruikt alt="", zodat die het voorlezen van het recept niet onderbreekt.
Dialoogondertiteling
Dialoogondertiteling is een gesynchroniseerde weergave of vertaling van de dialoog voor kijkers die audio kunnen horen maar hulp nodig hebben om die te begrijpen.
Een kijker gebruikt vertaalde dialoogondertiteling bij een interview, maar heeft nog steeds ondertiteling voor doven en slechthorenden nodig om belangrijke geluiden mee te krijgen.

F

Focus-visible
Focus-visible is een CSS-pseudoklasse die van toepassing is wanneer de browser bepaalt dat focus zichtbaar aan de gebruiker moet worden aangegeven.
Het stijlblad gebruikt :focus-visible voor een duidelijke toetsenbordring, terwijl gewone muisklikken op knoppen mogelijk geen ring tonen.
Focusbeheer
Focusbeheer is het bewust plaatsen van toetsenbordfocus na een interfacewijziging, zoals het sluiten van een dialoogvenster of verwijderen van een item, om een logische positie voor de taak te behouden.
Na het verwijderen van een item geeft de pagina de volgende verwijderknop focus in plaats van terug te vallen naar het begin van de pagina.
Focusindicator
Een focusindicator is een zichtbare aanwijzing die het element met toetsenbordfocus aanduidt, zodat gebruikers kunnen volgen welk bedieningselement hun volgende activeringstoets zal bedienen.
Een bakkerijwebsite behoudt een blauwe omtreklijn, zodat klanten kunnen zien welk bedieningselement de volgende druk op Enter zal activeren.
Formulierlabel
Een formulierlabel is tekst die aan een bedieningselement is gekoppeld, het doel ervan aanduidt en normaal de toegankelijke naam levert; een correcte HTML-koppeling ondersteunt ook focus door op het label te klikken.
Een klik op “E-mailadres” geeft het bijbehorende invoerveld focus omdat de for-waarde van het label overeenkomt met de ID.
Foutenoverzicht
Een foutenoverzicht is een gegroepeerd overzicht van formulierfouten dat vaak na verzending focus krijgt en links naar de betreffende bedieningselementen bevat.
Onder de kop “Er zijn 2 problemen met je bestelling” staan links die gebruikers naar de afgekeurde velden brengen.
Foutidentificatie
Foutidentificatie is de gebruiker in tekst vertellen welk invoerprobleem is ontdekt, zodat de fout zonder kleur begrijpelijk is.
Het formulier meldt “Fout: voer een e-mailadres in” naast het afgekeurde e-mailveld en bewaart de overige invoer.
Foutpreventie
Foutpreventie beveiligt inzendingen met gevolgen door omkering, controle met correctie of nakijken en bevestigen met correctie, in plaats van alleen achteraf een fout te melden.
Voordat de bestelling wordt geplaatst, kan de klant aantallen nakijken en een verkeerd afleveradres veranderen.
Foutsuggestie
Een foutsuggestie is een bekende, bruikbare oplossing die na een ontdekte invoerfout wordt aangeboden wanneer de veiligheid en het doel van het formulier dat toelaten.
De melding geeft het voorbeeld “name@example.com” in plaats van te stoppen bij de weinig behulpzame woorden “Ongeldige invoer”.
Functionele afbeelding
Een functionele afbeelding biedt als inhoud van een bedieningselement een actie of bestemming, zodat het alternatief die functie noemt in plaats van alleen het uiterlijk van de afbeelding te beschrijven.
Een logo dat als enige de link naar de homepagina vult, heeft het alternatief “Green Leaf Bakery home”.

G

Geautomatiseerde toegankelijkheidscontrole
Een geautomatiseerde toegankelijkheidscontrole past door software toetsbare regels toe op een weergegeven paginatoestand; die kan herkenbare fouten vinden, maar kan betekenis of alle interactie-eisen niet definitief beoordelen.
Een geautomatiseerde scan vindt een nieuwsbriefveld zonder label, maar een mens moet nog steeds beoordelen of afbeeldingsalternatieven bruikbaar zijn.
Gebruikersaanpassing van tekstafstand
Een gebruikersaanpassing van tekstafstand is een gebruikersstijl die regel-, alinea-, letter- of woordafstand vergroot en die inhoud zonder verlies moet kunnen verdragen.
De test brengt een kaart met vaste hoogte aan het licht die de laatste regel afsnijdt wanneer de alinea-afstand toeneemt.
Geforceerde kleuren
De weergavemodus voor geforceerde kleuren gebruikt een beperkt, door de gebruiker gekozen palet dat achtergronden kan vervangen en schaduwen kan verwijderen, zodat focusaanwijzingen onder die veranderingen bruikbaar moeten blijven.
Een focusring op basis van een omtreklijn blijft bruikbaar in een contrastthema van Windows nadat de schaduw van de knop verdwijnt.
Groepsbijschrift
Een groepsbijschrift is het korte groepslabel binnen een veldengroep dat samenhangende opties de context geeft van de vraag die ze beantwoorden.
“Bezorgmethode” is te horen bij de keuzerondjes, terwijl elke optie ook een eigen label heeft.
Grote tekst
Grote tekst voor WCAG-contrast is minstens 24 CSS-pixels normaal of ongeveer 18,7 CSS-pixels vet en komt op AA in aanmerking voor 3:1; een kop zijn bepaalt die grootte niet.
Een normale kop van 22 px gebruikt nog steeds het minimum van 4,5:1 voor normale tekst, ook al is het een kop.

H

Handmatige toegankelijkheidstest
Een handmatige toegankelijkheidstest gebruikt menselijke bediening en beoordeling om betekenis en gedrag te onderzoeken die geautomatiseerde regels niet volledig kunnen beoordelen.
De tester plaatst een bestelling met het toetsenbord en controleert waar de focus terugkeert na het sluiten van het controledialoogvenster.
Herkenningspunt
Een herkenningspunt is een programmatisch aangeduid paginagebied dat hulptechnologie als navigatiebestemming kan gebruiken, zoals de hoofdinhoud of een benoemd navigatiegebied.
Een schermlezergebruiker springt rechtstreeks naar de hoofdinhoud van een bakkerijwebsite in plaats van het kopgebied opnieuw te lezen.
Herschikking
Herschikking is het opnieuw indelen van inhoud voor een smalle weergave zonder informatieverlies of de noodzaak om gewone tekst in twee richtingen te scrollen; voor sommige tweedimensionale inhoud gelden uitzonderingen.
De navigatie wordt boven het bestelformulier gestapeld in plaats van te verdwijnen wanneer de beschikbare breedte kleiner wordt.
Hertesten
Hertesten is na een oplossing de eerder mislukte toegangsroute herhalen om te controleren of de oorspronkelijke belemmering is verholpen.
Na het herstellen van een label geeft de tester hetzelfde invoerveld focus met de schermlezer die de ontbrekende naam als eerste blootlegde.
Hulptechnologie
Hulptechnologie is een hulpmiddel dat iemand helpt digitale inhoud te gebruiken, zoals een schermlezer, schermvergroter of schakelapparaat.
Met spraakbediening kan een klant “klik op Zoeken” zeggen om een bedieningselement te bedienen waarvan de naam overeenkomt met het label.

I

Inert gebied
Een inert gebied is inhoud die onbeschikbaar is gemaakt voor interactie, zodat de afstammelingen niet als actieve bedieningselementen werken; bij ingebouwd modaal openen wordt de achtergrondpagina inert gemaakt.
Een modaal dialoogvenster dat met showModal() is geopend, maakt de achtergrondpagina inert zolang het venster actief is.

K

Kleuronafhankelijke aanwijzing
Een kleuronafhankelijke aanwijzing brengt een onderscheid over met woorden, vorm, patroon of een ander kenmerk waarvoor geen kleur hoeft te worden herkend.
Met gestreepte en ononderbroken lijnen in een grafiek kunnen kijkers de reeksen ook in een weergave in grijstinten onderscheiden.
Kleurzienstoornis
Een kleurzienstoornis is een verschil in kleurwaarneming waardoor sommige kleuren moeilijk van elkaar te onderscheiden kunnen zijn.
Een bakkerijwebsite voegt “Nu open” toe naast een groene stip, zodat de beschikbaarheid duidelijk blijft zonder groen te herkennen.
Knop
Een knop is een interactief bedieningselement dat een actie uitvoert, met ingebouwde HTML-ondersteuning voor focus en activering met Enter of de spatiebalk.
De knop “Filters tonen” opent keuzes op de huidige productpagina zonder ergens anders naartoe te navigeren.
Koppenhiërarchie
Een koppenhiërarchie is het overzicht dat door kopniveaus wordt uitgedrukt en een paginaonderwerp verbindt met secties en geneste subsecties, onafhankelijk van hun visuele lettergroottes.
“Smaken” is een h2, met “Chocolade” en “Citroen” als h3-subsecties binnen die sectie.

L

Label in naam
Label in naam is de eis dat de toegankelijke naam van een bedieningselement de zichtbare tekst bevat, zodat gebruikers het met die woorden kunnen bedienen.
Een knop Bestelling bevestigen behoudt “Bestelling bevestigen” in de berekende naam voor klanten die spraakbediening gebruiken.
Link
Een link is een navigatie-element dat een gebruiker naar een pagina, bestand of locatie brengt, normaal uitgedrukt als een anker met href.
De tekst “Bezorginformatie” linkt naar een pagina van een bakkerij die het bezorggebied en de bezorgtijden uitlegt.
Livegebied
Een livegebied is een paginagebied waarvan gewijzigde inhoud door hulptechnologie kan worden aangekondigd zonder de toetsenbordfocus te verplaatsen.
Een aanvankelijk lege alinea voor de winkelwagenstatus krijgt nieuwe tekst nadat de gebruiker op een toevoegknop drukt.

M

Melding voor handmatige beoordeling
Een melding voor handmatige beoordeling is een bevinding van een hulpmiddel die een mens moet inspecteren voordat wordt besloten of de gemarkeerde inhoud een belemmering vormt.
Een melding over een mogelijke kop leidt ertoe dat de maker controleert of de vetgedrukte alinea daadwerkelijk een sectie inleidt.
Modaal dialoogvenster
Een modaal dialoogvenster is een interactievenster dat aandacht vereist terwijl de omringende pagina onbeschikbaar wordt gemaakt voor interactie.
Een dialoogvenster met openingstijden houdt Tab binnen het venster totdat het sluit en geeft daarna de focus terug aan het bedieningselement dat het opende.

O

Ondertiteling voor doven en slechthorenden
Ondertiteling voor doven en slechthorenden is gesynchroniseerde tekst die tijdens het afspelen van video spraak, belangrijke geluiden en waar nodig de aanduiding van sprekers overbrengt, zodat hoorbare informatie visueel beschikbaar is.
De ondertiteling van een baklesvideo duidt zowel een timeralarm als de gesproken aanwijzingen van de instructeur aan.
Overbodige invoer
Overbodige invoer is het vragen naar informatie die al in hetzelfde proces is ingevoerd terwijl die ook kan worden hergebruikt of geselecteerd.
Een selectievakje voor de facturering hergebruikt het afleveradres, tenzij een geldige uitzondering vereist dat de klant het opnieuw invoert.

P

Paginataal
De paginataal is de hoofdtaal die op het HTML-hoofdelement wordt opgegeven, zodat hulptechnologie een passende uitspraak kan gebruiken.
Een Engelse bakkerijpagina stelt lang="en-US" in, terwijl een korte Franse passage daarop een eigen taalattribuut heeft.
Paginatitel
Een paginatitel is de tekst in het HTML-title-element die een pagina aanduidt in browsertabbladen, bladwijzers en aankondigingen van schermlezers.
Op een bakkerijwebsite onderscheidt de titel “Kies een taart – Bakkerij Groen Blad” het besteltabblad van het tabblad met openingstijden.
Plaatsaanduiding
Een plaatsaanduiding is een invoeraanwijzing die verschijnt zolang een veld leeg is, tijdens het typen verdwijnt en geen blijvend zichtbaar label biedt.
Het adresvoorbeeld blijft in hulptekst in de buurt staan, zodat het beschikbaar blijft nadat de klant begint te typen.
Presentatierol
Een presentatierol verwijdert de semantiek van een element terwijl de inhoud beschikbaar blijft; browsers negeren die rol op focusbare elementen, zodat die een actieve link niet kan uitschakelen.
Door role="presentation" toe te voegen kun je een actieve link niet betrouwbaar in gewone tekst veranderen of de inhoud ervan verbergen.

R

Relatieve luminantie
Relatieve luminantie is een berekende maat voor de helderheid van een kleur, met zwart op 0 en wit op 1 in WCAG-contrastberekeningen.
De contrastformule plaatst de lichtere luminantie plus 0,05 boven de donkerdere luminantie plus 0,05.
Rem
Een rem is een CSS-lengte-eenheid ten opzichte van de lettergrootte van het hoofdelement, waardoor tekstgroottes die basisinstelling kunnen volgen.
De 1rem-tekst van de body groeit wanneer de gebruiker de standaardlettergrootte van de browser vergroot.
Rol
Een rol is het semantische type dat voor een object in de toegankelijkheidsboom wordt gemeld en uitdrukt wat gebruikers mogen verwachten dat het is.
Een knoprol belooft een bedieningselement dat een actie uitvoert, maar die rol aan een div toekennen implementeert de toetsen niet.
Rotor
De rotor is een navigatiehulpmiddel van VoiceOver om categorieën zoals koppen, links, herkenningspunten en formulieronderdelen te kiezen.
Op macOS opent VO+U de rotor, zodat de tester de beschikbare kopbestemmingen van de pagina kan inspecteren.

S

Schakelknop
Een schakelknop is een knop die een aan-uittoestand behoudt, vaak weergegeven met aria-pressed terwijl het label gelijk blijft.
De schakelknop Dempen behoudt het woord “Dempen”, terwijl de ingedrukte toestand aangeeft of dempen aan staat.
Semantische HTML
Semantische HTML is opmaakcode die wordt gekozen op basis van de betekenis en het doel van de inhoud, waarbij de vormgeving afzonderlijk met CSS wordt geregeld.
Een bakkerijwebsite gebruikt een echte kop voor “Openingstijden”, zodat die verschijnt in de kopnavigatie van schermlezers.
Skiplink
Een skiplink is een met het toetsenbord bereikbare link die herhaalde pagina-inhoud overslaat en de gebruiker naar de hoofdinhoud brengt.
De eerste Tab toont “Skip to main content”, zodat de klant het volledige menu in het kopgebied kan overslaan.
Standaard HTML-bedieningselement
Een standaard HTML-bedieningselement is een ingebouwd interface-element van HTML dat standaardsemantiek, toetsenbordgedrag en relevante toestanden biedt.
Een bakkerijwebsite gebruikt een selectievakje voor aanbiedingen per e-mail en behoudt daarmee de verwachte bediening met de spatiebalk.
Statusbericht
Een statusbericht is een melding over een actie of toestand die beschikbaar moet zijn voor hulptechnologie zonder focus over te nemen.
“1 brood toegevoegd aan je winkelwagen” wordt beleefd aangekondigd terwijl de klant op de knop Toevoegen blijft.
SVG
SVG is een formaat voor vectorafbeeldingen waarvan betekenisvolle inline-afbeeldingen een passende rol en toegankelijke naam nodig hebben.
Een inline-afbeelding van een beoordeling gebruikt role="img" en een titel met “4 van de 5 sterren”.

T

Taakblokkerende belemmering
Een taakblokkerende belemmering is een obstakel dat een gebruiker verhindert een activiteit te voltooien en prioriteit moet krijgen bij toegankelijkheidsverbeteringen.
Een toetsenbordval bij het afrekenen wordt eerder opgelost dan een klein vormgevingsprobleem dat bestellen niet verhindert.
Tabelbijschrift
Een tabelbijschrift is de tekst van het HTML-caption-element die het onderwerp of doel van een gegevenstabel aanduidt.
“Openingstijden van de winkel” geeft de tabel een naam voordat een luisteraar door de dag- en tijdcellen navigeert.
Tabindex
Tabindex is een HTML-attribuut dat focus regelt: nul voegt een tabstop in de bronvolgorde toe, terwijl min één bewuste focus toestaat zonder een stop aan de gewone volgorde toe te voegen.
De winkelwagenkop gebruikt tabindex="-1", zodat een script die focus kan geven nadat het laatste item is verwijderd.
Tabvolgorde
Tabvolgorde is de volgorde van focusbare elementen die met Tab of Shift+Tab worden bereikt, normaal gebaseerd op een betekenisvolle documentvolgorde.
Het bestelformulier bereikt de contactgegevens vóór de bezorgkeuzes, in dezelfde volgorde als waarin ze verschijnen.
Toegankelijke beschrijving
Een toegankelijke beschrijving is ondersteunende tekst die aan een object is gekoppeld, zoals een veldtoelichting die na de naam wordt aangekondigd.
De wachtwoordtoelichting is gekoppeld met aria-describedby, terwijl het label de naam “Wachtwoord” blijft leveren.
Toegankelijke naam
Een toegankelijke naam is de berekende tekst die een object aanduidt, afgeleid van ondersteunde naambronnen zoals een label of knoptekst.
De ontwikkelaar onderzoekt waarom een aria-label de zichtbare woorden van de knop Cancel in de aangekondigde naam heeft vervangen.
Toegankelijkheidsboom
Een toegankelijkheidsboom is de door de browser afgeleide weergave van betekenisvolle paginaobjecten, die hun rollen, namen, toestanden en eigenschappen beschikbaar maakt voor hulptechnologieën.
De boom toont een ingebouwde knop Save als een knop met de naam “Save”, ook wanneer het uiterlijk is aangepast.
Toegankelijkheidsinspectie
Toegankelijkheidsinspectie is het onderzoeken van berekende rollen, namen en toestanden in browserhulpmiddelen om te achterhalen wat de pagina meldt.
Het toegankelijkheidspaneel toont dat een verborgen naamoverschrijving, en niet de zichtbare knoptekst, de naam levert.
Toepassingsbereik van een kopcel
Het toepassingsbereik van een kopcel is de opgegeven relatie van een tabelkopcel met de cellen van een rij of kolom, waarmee de browser een waarde kan koppelen aan de kopcellen die de betekenis ervan verklaren.
Een kopcel voor zaterdag heeft scope="row", zodat de naam wordt gekoppeld aan de openings- en sluitingstijden van die rij.
Toetsenbordfocus
Toetsenbordfocus is de huidige interactiepositie op een pagina, die het element aanduidt dat relevante toetsenbordinvoer ontvangt.
Nadat Tab “Toevoegen aan winkelwagen” bereikt, activeert een druk op de spatiebalk die knop met focus en geen ander item.
Toetsenbordval
Een toetsenbordval is een component die gebruikers met een toetsenbord kunnen binnengaan, maar niet via een beschikbare toetsenbordmethode kunnen verlaten.
Een ingesloten kaart voldoet niet aan de test wanneer Tab de kaart binnengaat maar de klant met geen enkele toetsenbordactie verder kan.
Transcript
Een transcript is een afzonderlijke tekstuele weergave van opgenomen audio, die gesproken informatie beschikbaar maakt zonder naar de opname te luisteren.
Een bakkerijpodcast biedt naast de audiospeler een leesbaar transcript voor mensen die de podcast niet kunnen horen.

U

Uitklapbediening
Een uitklapbediening is een bedieningselement dat een bijbehorend gebied toont of verbergt, met een uitgeklapte toestand die beschrijft of de inhoud open is.
De knop Menu gebruikt aria-expanded, terwijl een script ook hidden toevoegt aan of verwijdert van de lijst.
Uitsluitend op kleur gebaseerde aanwijzing
Een uitsluitend op kleur gebaseerde aanwijzing brengt een onderscheid alleen via kleur over, waardoor de betekenis niet beschikbaar is wanneer die kleur niet kan worden herkend.
Een rode rand zonder fouttekst laat de klant gissen welk veld moet worden verbeterd en waarom.

V

Veldengroep
Een veldengroep is een HTML-container die samenhangende formulieronderdelen groepeert, zodat hun gezamenlijke vraag via een groepsbijschrift kan worden aangeboden.
De keuzerondjes voor afhalen en koerier staan binnen één veldengroep voor de vraag naar de bezorgmethode.
Verplicht veld
Een verplicht veld is een formulieronderdeel dat moet worden ingevuld, wat kenbaar wordt gemaakt met een zichtbare markering en het ingebouwde required-attribuut.
Het label zegt “E-mailadres (verplicht)” en het invoerveld heeft required voor browsercontroles.
Viewportdeclaratie
Een viewportdeclaratie is HTML-metadata die de mobiele lay-outviewport regelt en die vaak laat overeenkomen met de apparaatbreedte met een beginschaal van één.
Een bakkerijwebsite staat zoomen met een knijpbeweging toe in plaats van user-scalable=no aan de viewportmetadata toe te voegen.
Visueel verborgen tekst
Visueel verborgen tekst is tekst die met CSS aan het gewone zicht wordt onttrokken maar in de toegankelijkheidsboom blijft, anders dan tekst die met display none of visibility hidden wordt verwijderd.
Een compacte verwijderknop houdt de woorden “Item verwijderen” beschikbaar voor schermlezers zonder ze weer te geven.

W

WAI-ARIA
WAI-ARIA is een W3C-specificatie van rollen, toestanden en eigenschappen die informatie toevoegen of wijzigen die aan hulptechnologieën wordt gemeld.
De uitklapbediening gebruikt ARIA voor de uitgeklapte toestand, terwijl een ingebouwde knop toetsenbordactivering biedt.
WCAG-succescriterium
Een WCAG-succescriterium is een genummerde, benoemde en toetsbare toegankelijkheidseis op niveau A, AA of AAA; voldoen aan AA omvat alle criteria van A en AA.
De ontwikkelaar controleert 1.4.3 Contrast (minimum) om te bepalen of de hoofdtekst aan de AA-drempel voldoet.
Webtoegankelijkheid
Webtoegankelijkheid is de mogelijkheid voor mensen met een beperking om een website waar te nemen, te begrijpen, erdoorheen te navigeren en die te bedienen met de hulpmiddelen en instellingen die zij gebruiken.
Een klant kan een online bestelling bij een bakkerij afronden met een toetsenbord, een schermlezer of een vergrote weergave.
WebVTT
WebVTT is een tekstspoorformaat dat tijden van tekstsegmenten aan tekst koppelt, zodat ondertiteling op de juiste momenten tijdens het afspelen verschijnt.
Een Engels ondertitelingsbestand biedt een getimed tekstsegment voor het geluid van een mixer vóór de volgende gesproken regel.

Over deze les

Door StudeliFout melden

Maak je eigen Studiemateriaal

Maak van je aantekeningen, slides en documenten Leermodules, Oefenvragen, Flashcards en 6 andere tools.

Aan de slag