Taal in de code vastleggen

Voorleessoftware kan tekst omzetten in spraak. Het gebruikt hier verschillende stemmen voor. Iedere stem is gemaakt om in een bepaalde taal te spreken. Om te bepalen in welke taal er moet worden gesproken is voorleessoftware afhankelijk van taal die in de code is vastgelegd.

Het vastleggen van de taal in de code heeft meerdere functies:

  • Voorleessoftware kan woorden en zinnen in de juiste taal uitspreken.
  • Browsers kunnen letters en karakters op de goede manier weergeven.
  • Zoekmachines gebruiken de taal van een webpagina om te bepalen of een pagina wordt opgenomen in zoekresultaten.

In dit artikel wordt uitgelegd hoe taal in de code kan worden vastgelegd.

Taal instellen

De taal van de website kan meestal alleen door een ontwikkelaar worden ingesteld. Soms kan het ook worden toegevoegd in de instellingen van het CMS.

Voor onderdelen van een webpagina kan in een CMS de taal meestal makkelijk worden toegevoegd in de editor op de pagina.

Code van taal instellen

Taal kan worden toegevoegd met het lang-attribuut. Gebruik als waarde van dit attribuut alleen een taalcode die voorkomt in de IANA Subtag Registry.

Een aantal veelgebruikte taalcodes:

TaalcodeTaal
nlNederlands
enEngels
frFrans
deDuits
plPools
itItaliaans
esSpaans
ptPortugees
Voorbeelden van taalcodes

Taal van de pagina

De standaard taal van een webpagina wordt aangegeven in het <html>-element. Voeg het lang-attribuut toe aan het <html>-element en gebruik de juiste taalcode.

<html lang="nl">

Taal van onderdelen

Een taalwissel, bijvoorbeeld een woord of zin die in een andere taal is geschreven, moet worden vastgelegd in de code. Voeg hiervoor het lang-attribuut toe aan het HTML-element van het onderdeel dat in een andere taal is geschreven en gebruik de juiste taalcode.

Het lang-attribuut kan worden gebruikt op block-elementen (<div><p><ul>, enz.) maar ook op inline-elementen (<span><a><strong>, enz.).

Voorbeeld van een taalwissel met een block-element:

<p lang="en">The quick brown fox jumps over the lazy dog.</p>
<ul lang="fr">
  <li>Langue de la page</li>
  <li>Langue d’un passage</li>
</ul>

Voorbeeld van een taalwissel met een inline-element:

<p>In het Verenigd Koninkrijk zeggen ze <span lang="en">It’s raining cats and dogs.</span>.</p>

Toegankelijke filmpjes en geluidsfragmenten

Met filmpjes en geluidsfragmenten kan informatie op een snelle en eenvoudige manier worden overbracht. Maar deze media zijn niet door iedereen goed te gebruiken, bijvoorbeeld als iemand niet (goed) kan horen of zien door een functiebeperking. Zorg daarom altijd voor een toegankelijk alternatief.

Ook voor mensen zonder functiebeperking is zo’n alternatief vaak gewenst. Zo kan een filmpje met ondertiteling ook goed worden gevolgd in de stiltecoupé van de trein.

In de richtlijnen voor toegankelijkheid van webcontent (de WCAG) wordt onderscheid gemaakt tussen verschillende vormen van media:

  • Geluidsfragmenten
  • Animaties (of andere bewegende beelden zonder geluid)
  • Filmpjes

Elementen van toegankelijke media

De elementen van toegankelijke geluidsfragmenten, animaties en filmpjes bestaan onder andere uit:

  • Tekstalternatief
  • Ondertitels
  • Audiodescriptie
  • Transcript
  • Gebarenvertolking

Tekstalternatief

Media valt onder de noemer ‘niet-tekstuele content’ en moet daarom, net zoals afbeeldingen, ook een tekstalternatief krijgen. Met een kort tekstalternatief kunnen mensen bepalen waar het stukje media over gaat en wat ze er mee willen doen. Ook als ze gebruik maken van een schermlezer of andere vorm van hulptechnologie.

Een kort tekstalternatief kan bijvoorbeeld worden toegevoegd met een goede koptekst boven het bestand of een korte beschrijving in de omringende tekst.

Audiodescriptie

Een audiodescriptie is een gesproken tekst, of een voice-over, die de belangrijke zichtbare informatie in een filmpje beschrijft als deze niet uit alleen het geluid te begrijpen is. Dat kan bijvoorbeeld gaan over tekst die in het filmpje te zien is, maar ook over veranderingen in omgeving of personage of over handelingen die worden uitgevoerd.

Een audiodescriptie maakt filmpjes toegankelijker voor mensen met een visuele beperking.

Een audiodescriptie kan worden toegevoegd in het geluid van het filmpje of eventueel als tweede geluidsspoor. Een tweede geluidsspoor wordt helaas nog niet goed ondersteund op de grote videoplatformen.

Ondertitels

Ondertitels zijn een tekstuele versie van de gesproken tekst in een filmpje dat gelijktijdig met het beeld wordt getoond. In ondertitels voor doven en slechthorenden worden óók alle belangrijke geluiden beschreven. Dat kunnen bijvoorbeeld geluidseffecten zijn, maar ook achtergrondgeluiden als ze belangrijk zijn om het filmpje goed te begrijpen.

Ondertitels maken filmpjes toegankelijker voor mensen met een auditieve beperking.

Ondertitels kunnen worden toegevoegd aan het beeld van een filmpje (open captions) of worden toegevoegd met een apart ondertitelbestand (closed captions).

Transcript

Een transcript is een uitgeschreven versie van de gesproken tekst en de belangrijke geluiden in een filmpje of geluidsfragment. Het beschrijft wat er te zien en te horen is, wat er gezegd wordt en ook door wie.

Een transcript maakt geluidsfragmenten en animaties toegankelijker voor mensen met een visuele of auditieve beperking.

Dit kan bijvoorbeeld met een uitgebreide beschrijving in de buurt van het mediabestand.

Gebarenvertolking

Gebarenvertolking is een vertaling van gesproken tekst naar gebarentaal. Deze taal wordt uitgedrukt met bewegingen van de handen en armen en met gezichtsuitdrukkingen.

Door gebarenvertolking toe te voegen aan een filmpje worden filmpjes ook toegankelijk voor mensen met een auditieve beperking.

WCAG

Niet alle onderdelen zijn verplicht volgens de WCAG niveau AA. Niveau AA is de geldende verplichting vanuit de Nederlandse wetgeving. De onderdelen die wel verplicht zijn:

  1. Geef mediabestanden een kort tekstalternatief.
  2. Geef geluidsfragmenten een transcript.
  3. Geef animaties (of andere bewegende beelden zonder geluid) een transcript of audiodescriptie.
  4. Geef filmpjes ondertitels voor doven en slechthorenden.
  5. Geef filmpjes een audiodescriptie als niet alle zichtbare details uit het geluid te begrijpen zijn.
  6. Geef filmpjes een transcript als het interactieve elementen heeft.

Uitzonderingen

Voor live uitgezonden filmpjes bestaat een uitzondering in de Nederlandse wetgeving. Als het filmpje ná de uitzending online blijft staan of ergens opnieuw wordt gepubliceerd dan moet deze wél toegankelijk worden gemaakt.

Ook media dat is gepubliceerd vóór 23 september 2020 valt onder de uitzonderingen. Ook hiervoor geldt; als het ergens opnieuw wordt gepubliceerd dan moet deze wél toegankelijk worden gemaakt.

Skiplinks

Op websites staan vaak blokken met content die op iedere pagina terug komen, zoals een logo, een zoekveld en een navigatie met een lijst van links. Mensen die alleen het toetsenbord gebruiken moeten eerst door deze blokken navigeren voordat ze bij de hoofdcontent van de webpagina komen, en dat op iedere pagina opnieuw.

Succescriterium 2.4.1 Blokken omzeilen vereist dat dit soort herhalende blokken met content overgeslagen kunnen worden. Dit kan redelijk eenvoudig met een zogenaamde skiplink. Een skiplink is een ankerlink aan het begin van een webpagina die direct verwijst naar de hoofdcontent. Een ontwikkelaar kan skiplinks toevoegen in de code van een website.

Een skiplink is bedoeld om het navigeren over een website prettiger te maken voor mensen die:

  • geen muis kunnen gebruiken door bijvoorbeeld een motorische beperking;
  • een schermlezer gebruiken, zoals voorleessoftware of een brailleleesregel;
  • de voorkeur hebben om alleen met het toetsenbord te navigeren.

Skiplinks worden in de code opgemaakt met een <a>-element. Het href-attribuut van dit element verwijst naar een id-attribuut van een element lager op de pagina, bijvoorbeeld het <main>-element.

<a href="#primary" class="skip">Naar de inhoud</a>
<main id="primary">

Skiplinks hoeven niet altijd zichtbaar te zijn. Verberg de skiplink bijvoorbeeld met CSS zodat het alleen voor hulptechnologieën te zien is. Dit kan met de volgende CSS:

.skip {
  position:absolute;
  left:-10000px;
  top:auto;
  width:1px;
  height:1px;
  overflow:hidden;
}

Maak de skiplink wel zichtbaar als het de toetsenbordfocus krijgt. Dit kan (bijvoorbeeld) met de volgende CSS:

.skip:focus {
  position: static;
  width: auto;
  height: auto;
}

Bij een ingewikkelde website kunnen meerdere skiplinks worden toegevoegd, zoals een skiplink naar de navigatie en naar de content. In de meeste gevallen is 1 skiplink genoeg.

Voorbeeldcode

In een stuk pagina-code ziet een skiplink er zo uit:

<body>
  <header>
    <a href="#primary" class="skip">Naar de inhoud</a>
    <a href="/"><img src="logo.jpg" alt="WCAG.nl"></a>
    <nav>
      <ul>
        <li><a href="/">Home</a></li>
        <li><a href="/artikelen">Artikelen</a></li>
        <li><a href="/onderzoek">Onderzoek</a></li>
        <li><a href="/over-ons">Over ons</a></li>
        <li><a href="/contact">Contact</a></li>
      </ul>
    </nav>
  </header>
  <main id="primary">
    ...
  </main>
</body>

Skiplinks kunnen ook in de content van een webpagina met veel tekst of links worden gebruikt. Gebruik hier een ankerlink aan het begin van de content die verwijst naar sectie in de content van de webpagina.

Een voorbeeld hiervan staat op de pagina “Voorbeeld WCAG-onderzoek“.

Toegankelijke tabellen

Tabellen zijn een goede manier om complexe gegevens overzichtelijk weer te geven. Als ze goed zijn opgemaakt dan zijn tabellen door iedereen goed te gebruiken. Zorg daarom dat de tabellen gebruik maken van de juiste elementen in de code. Als de relaties tussen de gegevens ook in de code staan dan kan een schermlezer, zoals voorleessoftware of een brailleleesregel, de informatie uit de tabel op een logische manier presenteren.

In dit artikel staan handvatten voor het maken van een toegankelijke tabel.

Tabellen gebruiken

Een tabel kan in een CMS meestal makkelijk worden toegevoegd in de editor op de pagina. Geef aan welke cellen tabelkoppen zijn en in welke cellen gegevens staan.

Gebruik tabellen alleen als het de informatie duide­lijker maakt. Zorg voor simpele en overzichte­lijke tabellen.

Code voor tabellen

Tabellen worden in de code opgemaakt met het <table>-element. Dit element heeft onderliggende <tr>-, <th>-, en <td>-elementen:

  • Het <tr>-element wordt gebruikt voor een tabelrij.
  • Het <th>-element wordt gebruikt voor een tabelkop.
  • Gegevenscellen worden opgemaakt met <td>-elementen.

Het <caption>-element geeft de inhoud van de tabel in het kort weer. Het <caption>-element is optioneel.

Eenvoudige tabellen

In eenvoudige tabellen, zoals een tabel met 1 kolom of 1 rij met koppen, kan hulptechnologie de onderlinge relaties zelf bepalen. Gebruik de juiste HTML-elementen voor de tabelkoppen en de gegevenscellen.

Voorbeeld van een tabel met 1 kolom met koppen:

<table>
  <caption>Beschrijving van de tabelgegevens</caption>
  <tr>
    <th>Tabelkop van rij 1</th>
    <td>Gegevenscel 1</td>
    <td>Gegevenscel 2</td>
  </tr>
  <tr>
    <th>Tabelkop van rij 2</th>
    <td>Gegevenscel 3</td>
    <td>Gegevenscel 4</td>
  </tr>
</table>

Voorbeeld van een tabel met 1 rij met koppen:

<table>
  <caption>Beschrijving van de tabelgegevens</caption>
  <tr>
    <th>Tabelkop van kolom 1</th>
    <th>Tabelkop van kolom 2</th>
  </tr>
  <tr>
    <td>Gegevenscel 1</td>
    <td>Gegevenscel 2</td>
  </tr>
  <tr>
    <td>Gegevenscel 3</td>
    <td>Gegevenscel 4</td>
  </tr>
</table>

Complexe tabellen

Sommige tabellen zijn wat moeilijker. Bijvoorbeeld doordat er koppen in 2 richtingen staan. In deze tabellen moet in de code expliciet worden aangegeven welke kop bij welke cellen hoort. Dit kan met het scope-attribuut of het headers-attribuut.

scope-attribuut

Gebruik het scope-attribuut om aan te geven welke cellen bij de kop horen. Voeg het scope-attribuut toe aan de tabelkop van een rij of kolom. Het attribuut kan de waarde row of col hebben:

  • scope="col"⁣: Geeft aan dat de cel een kop is voor de kolom.
  • scope="row"⁣: Geeft aan dat de cel een kop is voor de rij.

Voorbeeld van een tabel met 1 kolom en 1 rij koppen met het scope-attribuut:

<table>
  <caption>Beschrijving van de tabelgegevens</caption>
  <tr>
    <td></td>
    <th scope="col">Tabelkop van kolom 1</th>
    <th scope="col">Tabelkop van kolom 2</th>
  </tr>
  <tr>
    <th scope="row">Tabelkop van rij 1</th>
    <td>Gegevenscel 1</td>
    <td>Gegevenscel 2</td>
  </tr>
  <tr>
    <th scope="row">Tabelkop van rij 2</th>
    <td>Gegevenscel 3</td>
    <td>Gegevenscel 4</td>
  </tr>
</table>

headers-attribuut

Gebruik het headers-attribuut om aan te geven welke kop bij de cel hoort. Dit kunnen meerdere koppen zijn. Het headers-attribuut koppelt de cel met het id-attribuut aan de cel.

Let op: Het headers-attribuut wordt niet breed ondersteund door schermlezers.

Voorbeeld van een tabel met 1 kolom en 1 rij koppen met het headers-attribuut:

<table>
  <caption>Beschrijving van de tabelgegevens</caption>
  <tr>
    <td></td>
    <th id="kolom1">Tabelkop van kolom 1</th>
    <th id="kolom2">Tabelkop van kolom 2</th>
  </tr>
  <tr>
    <th id="rij1">Tabelkop van rij 1</th>
    <td headers="rij1 kolom1">Gegevenscel 1</td>
    <td headers="rij2 kolom1">Gegevenscel 2</td>
  </tr>
  <tr>
    <th id="rij2">Tabelkop van rij 2</th>
    <td headers="rij2 kolom1">Gegevenscel 3</td>
    <td headers="rij2 kolom2">Gegevenscel 4</td>
  </tr>
</table>

Nog complexere tabellen

Het is mogelijk om complexere tabellen te gebruiken. Bijvoorbeeld met koppen voor meerdere rijen en kolommen. Pas hier wel wel op; met te veel informatie in een tabel kan het onoverzichtelijk worden. Kies dan liever voor 2 of meerdere eenvoudige tabellen.

<thead>-, <tbody>- en <tfoot>-elementen

Voor het opbouwen van een tabel met meerdere rijen met koppen kunnen <thead>-, <tbody>-, en <tfoot>-elementen worden gebruikt.

  • Het <thead>-element wordt gebruikt voor de rijen met koppen.
  • Het <tbody>-element wordt gebruikt voor de rijen met gegevenscellen.
  • Gebruik het <tfoot>-element voor het resultaat van de bovenliggende gegevenscellen.

De <thead>-, <tbody>-, en <tfoot>-elementen kunnen ook goed gebruikt worden om stijlkenmerken toe te voegen aan onderdelen van de tabel.

<table>
  <caption>Beschrijving van de tabelgegevens</caption>
  <thead>
    <tr>
      <td rowspan="2"></td>
      <th colspan="2">Tabelkop van kolom 1 en 2</th>
      <th colspan="2">Tabelkop van kolom 3 en 4</th>
    </tr>
    <tr>
      <th scope="col">Tabelkop van kolom 1</th>
      <th scope="col">Tabelkop van kolom 2</th>
      <th scope="col">Tabelkop van kolom 3</th>
      <th scope="col">Tabelkop van kolom 4</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">Tabelkop van rij 1</th>
      <td>Gegevenscel 1</td>
      <td>Gegevenscel 2</td>
      <td>Gegevenscel 3</td>
      <td>Gegevenscel 4</td>
    </tr>
    <tr>
      <th scope="row">Tabelkop van rij 2</th>
      <td>Gegevenscel 5</td>
      <td>Gegevenscel 6</td>
      <td>Gegevenscel 7</td>
      <td>Gegevenscel 8</td>
    </tr>
  </tbody>
  <tfoot>
    <th scope="row">Tabelkop van rij 3</th>
    <td>Som gegevens 1 en 5</td>
    <td>Som gegevens 2 en 6</td>
    <td>Som gegevens 3 en 7</td>
    <td>Som gegevens 4 en 8</td>
  </tfoot>
</table>

De <thead>-, <tbody>-, en <tfoot>-elementen kunnen ook worden gebruikt in eenvoudige tabellen.

colgroup-attribuut en rowgroup-attribuut

Als een kop geldt voor meerdere kolommen of rijen, gebruik dan de waarden:

  • scope="colgroup"⁣: Geeft aan dat de cel een kop is voor meerdere kolommen.
  • scope="rowgroup"⁣: Geeft aan dat de cel een kop is voor meerdere rijen.

Om deze opzet goed te gebruiken moet eerst de kolomstructuur worden vastgelegd. Deze wordt aan het begin van de tabel gedefinieerd met het <colgroup>-element. Hierin wordt een kolom gedefinieert met het <col>-element. Zorg dat de som van het totaal aantal vastgelegde kolommen gelijk is aan het aantal kolommen in de tabel.

Het <col>-element kan ook goed gebruikt worden om stijlkenmerken toe te voegen aan een kolom.

<table>
  <caption>Beschrijving van de tabelgegevens</caption>
  <colgroup>
    <col span="2">
    <col span="2" style="background-color:tomato;">
    <col span="2">
  </colgroup>
  <tr>
    <td rowspan="2" colspan="2"></td>
    <th colspan="2" scope="colgroup">Tabelkop van kolom 1 en 2</th>
    <th colspan="2" scope="colgroup">Tabelkop van kolom 3 en 4</th>
  </tr>
  <tr>
    <th scope="col">Tabelkop van kolom 1</th>
    <th scope="col">Tabelkop van kolom 2</th>
    <th scope="col">Tabelkop van kolom 3</th>
    <th scope="col">Tabelkop van kolom 4</th>
  </tr>
  <tr>
    <th rowspan="2" scope="rowgroup">Tabelkop van rij 1 en 2</th>
    <th scope="row">Tabelkop van rij 1</th>
    <td>Gegevenscel 1</td>
    <td>Gegevenscel 2</td>
    <td>Gegevenscel 3</td>
    <td>Gegevenscel 4</td>
  </tr>
  <tr>
    <th scope="row">Tabelkop van rij 2</th>
    <td>Gegevenscel 5</td>
    <td>Gegevenscel 6</td>
    <td>Gegevenscel 7</td>
    <td>Gegevenscel 8</td>
  </tr>
</table>

Deze tabel ziet er zo uit:

Beschrijving van de tabelgegevens
Tabelkop van kolom 1 en 2 Tabelkop van kolom 3 en 4
Tabelkop van kolom 1 Tabelkop van kolom 2 Tabelkop van kolom 3 Tabelkop van kolom 4
Tabelkop van rij 1 en 2 Tabelkop van rij 1 Gegevenscel 1 Gegevenscel 2 Gegevenscel 3 Gegevenscel 4
Tabelkop van rij 2 Gegevenscel 5 Gegevenscel 6 Gegevenscel 7 Gegevenscel 8

Grote tabellen

Voeg een horizontale scroll toe als een webpagina niet breed genoeg is om de inhoud van een tabel volledig weer te geven. Deze wordt toegevoegd in de code. Voeg hiervoor overflow-x:auto toe aan de stijlkenmerken van de container rondom de tabel.

Zorg dan ook dat de horizontale scroll van de tabel met het toetsenbord te bereiken en bedienen is. Dit wordt gedaan met het tabindex-attribuut.

<div style="overflow-x:auto;" tabindex="0">
  <table>
    ...
  </table>
</div>

Tekstalternatief bij een afbeelding

Succescriterium 1.1.1 Niet-tekstuele content lijkt erg eenvoudig: Geef alle niet-tekstuele content op een pagina een passend alternatief dat wel uit tekst bestaat. Toch gaat dit in de praktijk vaak mis.

In dit artikel staan handvatten voor het toevoegen van een tekstalternatief aan een afbeelding zoals een foto, illustratie of icoon. Hier kan een contentspecialist, webredacteur of ontwikkelaar afbeeldingen direct toegankelijker mee maken.

Succescriterium 1.1.1 Niet-tekstuele content valt onder principe 1: Waarneembaar van de richtlijnen voor toegankelijkheid van webcontent. Dit principe moet zorgen dat iedereen een website, document of app kan ervaren met de zintuigen die voor hen beschikbaar zijn. Niet iedereen heeft namelijk altijd, alle zintuigen ter beschikking.

Tekstalternatieven hebben meerdere functies:

  • Schermlezers gebruiken het tekstalternatief om niet-tekstuele content te presenteren. Zo kan voorleessoftware tekst omzetten in spraak en kan een brailleleesregel tekst vertalen naar braille. Op deze manier wordt niet-tekstuele content ook toegankelijk voor mensen met een visuele beperking.
  • Browsers laten het tekstalternatief zien als een afbeelding niet kan inladen door een fout in de code of een fout in de verbinding.
  • Zoekmachines gebruiken het tekstalternatief bij het beoordelen van de inhoud van een webpagina.

Schrijven van een tekstalternatief

Een tekstalternatief kan in een CMS meestal makkelijk worden toegevoegd in de mediabibliotheek of in de editor op de pagina.

Een tekstueel alternatief werkt alleen als de beschrijving goed passend is; De inhoud van het tekstalternatief hangt af van het doel van de afbeelding. Afbeeldingen zijn in 4 categorieën te verdelen:

  1. Informatief: Afbeeldingen die informatie toevoegen aan een pagina.
  2. Functioneel: Afbeeldingen die ook een link of knop zijn.
  3. Decoratief: Afbeeldingen die niet noodzakelijk zijn voor het begrijpen van de tekst of de pagina.
  4. Complex: Afbeeldingen die veel informatie toevoegen aan een pagina.

Informatieve afbeeldingen

Geef informatieve afbeeldingen een tekstalternatief dat beschrijft wat er op de afbeelding te zien is.

Functionele afbeeldingen

Geef functionele afbeeldingen een tekstalternatief dat beschrijft wat het doel van de link is of beschrijft wat het resultaat van de actie is.

Decoratieve afbeeldingen

Zorg dat hulptechnologieën decoratieve afbeeldingen kunnen negeren. Een leeg tekstalternatief is vaak al voldoende.

Complexe afbeeldingen

Geef complexe afbeeldingen naast een beknopte beschrijving in het tekstalternatief ook een langere beschrijving in de omringende tekst.

Code van een tekstalternatief

<img>-element

Het <img>-element is een veelgebruikte manier om afbeeldingen toe te voegen aan een website. Een tekstalternatief voor een <img>-element wordt gegeven met het alt-attribuut. Alle <img>-elementen moeten een alt-attribuut hebben.

De inhoud van het alt-attribuut is standaard niet zichtbaar.

<img src="logo-wcag.jpg" alt="WCAG.nl">

Bij een decoratieve afbeelding moet het alt-attribuut een lege waarde hebben (alt=""). Hierdoor kunnen hulptechnologieën de afbeelding negeren.

<img src="horizontale-lijn.jpg" alt="">

Geef bij complexe afbeeldingen naast een beschrijving in het alt-attribuut ook een langere beschrijving in de omringende tekst. Deze kan in de code worden gekoppeld aan het <img>-element. Gebruik hiervoor het aria-describedby-attribuut met het id-attribuut van het beschrijvende element.

<img src="infographic.jpg" alt="besluitboom voor het schrijven van tekstalternatief" aria-describedby="1">
<div id="1">
  <p>Afbeeldingen zijn in 4 categorieën te verdelen:</p>
  <ol>
    <li>Informatief</li>
    <li>Functioneel</li>
    <li>Decoratief</li>
    <li>Complex</li>
  </ol>
  ...
</div>

<svg>-element

Het <svg>-element is een container voor SVG-afbeeldingen. SVG-afbeeldingen zijn vector-based afbeeldingen. Deze afbeeldingen zijn hierdoor goed schaalbaar; ze kunnen worden vergroot zonder dat de kwaliteit verloren gaat.

Een tekstalternatief kan op een aantal manieren worden toegevoegd aan een <svg>-element. Bijvoorbeeld met het <title>-element of met het aria-labelledby-attribuut.

<svg role="img">
  <title>WCAG.nl</title>
  ...
</svg>
<svg role="img" aria-labelledby="1">
  ...
</svg>
<span id="1">WCAG.nl</span>

Als het <svg>-element puur decoratief is, gebruik dan het aria-hidden="true"-attribuut zodat het kan worden genegeerd door hulptechnologieën.

<svg aria-hidden="true">
  ...
</svg>

<figure>-element

Het <figure>-element is toegevoegd in HTML5. In het <figure>-element kunnen afbeeldingen worden gepresenteerd (maar ook andere opzichzelfstaande content zoals tekst, quotes, codeblokken, enz.).

Voor het plaatsen van een afbeelding met het <figure>-element wordt een <img>-element in het <figure>-element geplaatst. Het <img>-element heeft hier ook het alt-attribuut nodig.

Het <figcaption>-element geeft een zichtbaar bijschrift de afbeeldingen in een <figure>-element. Het <figcaption>-element is optioneel.

<figure>
  <img src="teckel.jpg" alt="Teckel rennend met speelgoed">
  <figcaption>
    Mijn hond Jet
  </figcaption>
</figure>

Het <figure>-element is handig voor het presenteren van meerdere afbeeldingen in een groep.

<figure>
  <img src="teckel_1.jpg" alt="teckel rennend in het gras">
  <img src="teckel_2.jpg" alt="teckel staand in de zee">
  <figcaption>
    Mijn hond Jet
  </figcaption>
</figure>

Icon fonts of toolkits

Icon fonts zijn lettertypen met iconen in plaats van letters en cijfers. Icon toolkits bestaan uit een iconenbibliotheek met soms duizenden iconen. Deze manieren van het plaatsen van een icoon zijn populair omdat de iconen makkelijk met CSS kunnen worden vormgegeven en goed schaalbaar zijn.

Deze iconen zijn standaard nog niet goed toegankelijk. Ze hebben geen tekstalternatief en worden soms, net als gewone tekst, wél gepresenteerd door schermlezers. Zorg daarom dat het icoon wordt verborgen voor hulptechnologieën met het aria-hidden="true"-attribuut en geef het icoon een passend tekstalternatief.

Een tekstalternatief voor een icon font kan bijvoorbeeld worden toegevoegd met gewone tekst die dan wordt verborgen met CSS. Deze tekst is dan alleen voor hulptechnologieën te zien. Dit kan eventueel samen met het title-attribuut.

<i class="fas fa-calendar" aria-hidden="true" title="Datum"></i>
<span class="screenreader-text">Datum:</span>
<span>19 mei 2022</span>

Met de CSS:

.screenreader-text {
  position:absolute;
  left:-10000px;
  top:auto;
  width:1px;
  height:1px;
  overflow:hidden;
}

Dit is een voorbeeld met de icon toolkit Font Awesome. Kijk voor meer informatie ook eens op Font Awesome Accessibility: http://fontawesome.io/accessibility/ (Engelstalig)

Tips voor tekstalternatieven

Tot slot nog een paar tips voor het schrijven van een goed tekstalternatief:

  • Beschrijf wat belangrijk is voor de context en het doel van de afbeelding.
  • Zorg dat de beschrijving beknopt maar relevant is (maximaal 150 tekens).
  • Gebruik in de beschrijving alleen teksten zoals “foto van..”, “illustratie van..” of “schermafbeelding van..” als dit relevant is voor de context en het doel van de afbeelding.
  • Gebruik in de beschrijving alle tekst die op de afbeelding te zien is.

Functiebeperkingen in Nederland

In Nederland heeft ongeveer 25% van de bevolking een vorm van functiebeperking. Deze groep bestaat onder andere uit mensen met een auditieve beperking, cognitieve of neurologische beperking, fysieke of motorische beperking, visuele beperking of spraakbeperking.

Het is moeilijk om de echte cijfers te bepalen. Veel cijfers zijn een schatting en er is een overlap in cijfers doordat mensen meerdere functiebeperkingen kunnen hebben. De cijfers kunnen dus niet zomaar bij elkaar worden opgeteld.

FunctiebeperkingAantal mensen
BlindenOngeveer 76.000
SlechtziendenOngeveer 222.000
KleurenblindenOngeveer 750.000
Doven en slechthorendenOngeveer 1.500.000
Ernstige motorische beperkingOngeveer 472.000
Lichte verstandelijke beperkingOngeveer 68.000
DyslecticiOngeveer 850.000
LaaggeletterdenOngeveer 2.500.000
Schatting van het aantal mensen in Nederland met een functiebeperking volgens Digitoegankelijk in augustus 2019

Veel van deze mensen hebben dagelijks problemen met de toegankelijkheid van digitale informatie. Daarnaast is er een steeds groter wordende groep ouderen die moeite hebben met het gebruik van computers, smartphones, websites en apps.

Functiebeperkingen

Auditieve beperking

Auditieve beperkingen hebben te maken met een beperking aan het gehoor. Mensen met een auditieve beperking zijn bijvoorbeeld slechthorend of doof. Zij lopen mogelijk tegen problemen aan met informatie die alleen met geluid wordt overgebracht.

Voor een aantal mensen met een auditieve beperking is gebarentaal de primaire taal.

Voor mensen met een auditieve beperking:

  • Geef geluidsfragmenten een transcript.
  • Geef filmpjes ondertitels waarin ook alle belangrijke geluiden zijn opgenomen.

Cognitieve of neurologische beperking

Cognitieve en neurologische beperkingen hebben te maken met een beperking in het zenuwstelsel, inclusief de hersenen. Dit kan invloed hebben op de spraak, het gehoor, het zicht en het begrip. Dit zijn bijvoorbeeld mensen die ADHD, ASS, toevallen, een leerstoornis of een stoornis aan het geheugen hebben.

Voor mensen met een cognitieve of neurologische beperking:

  • Zorg dat automatisch bewegende, knipperende of scrollende content kan worden gepauzeerd, gestopt of uitgezet.
  • Gebruik geen elementen die meer dan 3 keer per seconde flitsen.
  • Zorg dat navigaties op iedere pagina in een vaste volgorde in de code staan.
  • Zorg voor duidelijke foutmeldingen als een formulier verkeerd is ingevuld.

Fysieke of motorische beperking

Fysieke of motorische beperkingen hebben te maken met een beperking in de beweging. In deze groep beperkingen vallen bijvoorbeeld mensen met onvrijwillige bewegingen (spasmen of tremors), coördinatieproblemen, verlamming, artritis en mensen met ontbrekende ledematen. Zij kunnen moeite hebben met de bediening van een website.

Voor mensen met een fysieke of motorische beperking:

  • Zorg dat alle functionaliteit te bereiken en bedienen is met het toetsenbord.
  • Zorg dat tijdslimieten kunnen worden uitgezet, aangepast of worden verlengd.
  • Zorg bij functionaliteit dat gebruik maakt van meerpuntsgebaren of padgebaseerde gebaren ook voor een alternatieve bediening die met 1 klik of tap te bedienen is.

Visuele beperking

Visuele beperkingen zijn een beperking aan het zicht. Mensen met een visuele beperking zijn bijvoorbeeld kleurenblind, slechtziend of blind. Zij lopen mogelijk tegen problemen aan met informatie die alleen met vormgeving wordt overgebracht.

Voor mensen met een visuele beperking:

  • Geef alle niet-tekstuele content een passend tekstalternatief.
  • Geef filmpjes een audiodescriptie als niet alle zichtbare informatie in geluid duidelijk wordt.
  • Gebruik niet alleen kleur om informatie over te dragen.
  • Gebruik genoeg contrast voor tekst en bedieningselementen.
  • Zorg dat tekst kan worden herschaald zonder dat er iets wegvalt of niet meer werkt en zonder dat horizontaal scrollen voorkomt.

Spraakbeperking

Spraakbeperkingen hebben te maken met het produceren van spraak dat goed verstaanbaar is. Dit zijn bijvoorbeeld mensen die stotteren, die niet goed kunnen articuleren of mensen die helemaal niet kunnen spreken. Zij lopen mogelijk tegen problemen aan met functionaliteit die met stem- of spraak wordt bediend.

Voor mensen met een spraakbeperking:

  • Bied meer contactmogelijkheden dan alleen een telefoonnummer.

Digitale toegankelijkheid is voor iedereen

Een toegankelijke website heeft ook voordelen voor mensen zonder blijvende functiebeperking. Ondertitels zijn bijvoorbeeld ook handig als je een filmpje wilt kijken in een omgeving met veel lawaai. En met genoeg kleurcontrast kun je tekst beter lezen als er veel licht op je scherm valt.

Digitale toegankelijkheid vergroot ook de gebruiksvriendelijkheid voor iedereen, de vindbaarheid in zoekmachines en de compatibiliteit van een website.

Interessante links