Succescriterium 1.3.1 Info en relaties
Informatie, structuur en relaties overgebracht door presentatie kunnen door software bepaald worden of zijn beschikbaar in tekst.
Info en relaties begrijpen (Engelstalig)
Als je een website maakt, is het belangrijk dat de indeling en opmaak niet alleen voor bezoekers, maar ook voor computers begrijpelijk zijn. Wat je met vormgeving laat zien, moet ook in de code van je website duidelijk zijn. Denk hierbij bijvoorbeeld aan koppen, lijsten, tabellen en andere elementen die betekenis overbrengen.
Schermlezers zijn namelijk afhankelijk van de onderliggende code. Door betekenisvolle (semantische) code te gebruiken, leg je de informatie, structuur en relaties van elementen vast. Mensen die een schermlezer gebruiken kunnen hierdoor gemakkelijk door een pagina navigeren, bijvoorbeeld door van kop naar kop te springen.
Hoe pas je dit toe?
Zorg dat informatie, structuur en relaties in de content niet alleen in de vormgeving maar ook in de code is vastgelegd.
Lees het artikel over info en relaties en semantische HTML
Koppen
- Zorg dat koppen worden opgemaakt met het HTML-element
<h[x]>(<h1>tot en met<h6>).
Lijsten
- Zorg dat ongeordende lijsten worden opgemaakt met het HTML-element
<ul>. - Zorg dat genummerde lijsten worden opgemaakt met het HTML-element
<ol>. - Zorg dat definitielijsten worden opgemaakt met het HTML-element
<dl>.
Tabellen
- Zorg dat tabellen worden opgemaakt met het HTML-element
<table>. - Zorg dat alle cellen met gegevens in een datatabel worden opgemaakt met het HTML-element
<td>. - Zorg dat cellen die een tabelkop zijn in een datatabel worden opgemaakt met het HTML-element
<th>.
Teksten
- Zorg dat citaten in een tekst worden opgemaakt met het HTML-element
<q>. - Zorg dat citaten worden opgemaakt met het HTML-element
<blockquote>. - Zorg dat codeblokken worden opgemaakt met het HTML-element
<pre>. - Zorg dat codes in een tekst worden opgemaakt met het HTML-element
<code>.
Voor wie is dit belangrijk?
- Mensen die een schermlezer gebruiken.
- Mensen die blind of slechtziend zijn.
Wie is verantwoordelijk?
- Redacteur
- Ontwikkelaar
Hoe toets je dit?
Benodigdheden
- Schermlezer (bijvoorbeeld NVDA of VoiceOver)
- headingsMap browser-extensie
- Stylus browser-extensie
- In combinatie met mijn CSS-stijlen:
Testprocedure
Test 1: Koppen
- Inventariseer de pagina
- Bepaal welke teksten de functie hebben van een kop:
- Grotere tekst
- Vetgedrukte tekst
- Tekst in een andere kleur
- Tekst met extra witruimte er omheen
- Bepaal welke teksten de functie hebben van een kop:
- Zoek in de code naar kop-elementen en controleer:
- Of visuele koppen zijn opgemaakt met
<h1>tot en met<h6> - Of visuele koppen zijn opgemaakt met
role="heading"enaria-level-attribuut - Of de hiërarchie de betekenis van de pagina niet in de weg staat
- Of visuele koppen zijn opgemaakt met
- Zoek in de code naar misbruik van kop-elementen en controleer:
- Of
<h1>tot en met<h6>niet alleen voor styling worden gebruikt - Of kop-elementen niet alleen worden gebruikt om de lettergrootte te wijzigen
- Of
Test 2: Lijsten
- Inventariseer de pagina
- Bepaal welke content er uit ziet als een lijst:
- Items met opsommingstekens, nummers of letters
- Items onder elkaar (met of zonder inspringing)
- Bepaal welke content er uit ziet als een lijst:
- Zoek in de code naar lijsten en controleer:
- Of visuele lijsten zijn opgemaakt met
<ul>en<li>(ongeordende lijsten) - Of visuele lijsten zijn opgemaakt met
<ol>en<li>(geordende lijsten) - Of visuele lijsten zijn opgemaakt met
<dl>,<dt>en<dd>(definitielijsten) - Of visuele lijsten zijn opgemaakt met
role="list"enrole="listitem"
- Of visuele lijsten zijn opgemaakt met
- Zoek in de code naar het lijsttype en controleer:
- Of ongeordende lijsten (
<ul>) zijn gebruikt wanneer de volgorde niet uitmaakt - Of geordende lijsten (
<ol>) zijn gebruikt wanneer de volgorde belangrijk is - Of definitielijsten (
<dl>) zijn gebruikt voor termen met beschrijvingen
- Of ongeordende lijsten (
- Zoek in de code naar misbruik van lijstelementen en controleer:
- Of lijstelementen niet worden gebruikt voor content die geen lijst is
- Of lijstelementen niet alleen voor styling worden gebruikt
- Zoek in de code naar geneste lijsten en controleer:
- Of
<ul>of<ol>alleen<li>,<script>of<template>als directe kinderen bevatten - Of
<dl>alleen<dt>met<dd>,<script>,<template>of<div>als directe kinderen bevatten - Of geneste lijsten correct zijn opgebouwd
- Of
Test 3: Tabellen
- Inventariseer de pagina
- Bepaal welke content er visueel is weergegeven als een tabel:
- Kolommen en rijen met gerelateerde data
- Koppen boven kolommen of naast rijen
- Bepaal het tabeltype:
- Datatabel: bevat gestructureerde data met koppen
- Presentatietabel: alleen voor visuele positionering
- Bepaal welke content er visueel is weergegeven als een tabel:
Datatabel
- Zoek in de code naar tabelelementen en controleer:
- Of datatabellen zijn opgemaakt met
<table>-element - Of datatabellen zijn opgemaakt met
role="table",role="row",role="columnheader",role="rowheader"
- Of datatabellen zijn opgemaakt met
- Bekijk de tabelstructuur en controleer:
- Of elke kolom een duidelijke betekenis heeft
- Of elke rij een duidelijke betekenis heeft
- Of koppen de inhoud van kolommen en/of rijen beschrijven
- Zoek in de code naar tabelkop-elementen en controleer:
- Of visuele tabelkoppen zijn opgemaakt met
<th> - Of visuele tabelkoppen zijn opgemaakt met
role="columnheader"ofrole="rowheader" - Of kopcellen niet zijn opgemaakt met
<td>
- Of visuele tabelkoppen zijn opgemaakt met
- Zoek in de code naar het
scope-attribuut en controleer:- Of tabellen met rij- én kolomkoppen het
scope-attribuut gebruiken - Of
scope="col"is gebruikt voor kolomkoppen - Of
scope="row"is gebruikt voor rijkoppen
- Of tabellen met rij- én kolomkoppen het
Complexe datatabel
Let op: Deze stappen zijn alleen voor complexe tabellen met:
- Tabelkoppen op meerdere niveaus
- Samengevoegde tabelkoppen
- Meer dan 2 niveaus van koppen
- Zoek in de code naar
headerseniden controleer:- Of elke kopcel een uniek
idheeft - Of elke datacel een
headers-attribuut heeft - Of het
headers-attribuut verwijst naar alle relevante kop-id‘s
- Of elke kopcel een uniek
- Zoek in de code naar
scopein complexe tabellen en controleer:- Of het
scope-attribuut niet samen wordt gebruikt metheadersmetid
- Of het
Presentatietabel
Let op: Deze stappen zijn alleen voor presentatietabellen
- Zoek in de code naar presentatietabellen en controleer:
- Of presentatietabellen geen
<th>-elementen bevatten - Of presentatietabellen geen
<caption>-element bevatten - Of presentatietabellen geen
summary-,headers– ofscope-attributen bevatten
- Of presentatietabellen geen
Test 4: Algemene semantiek
- Verken de pagina met een schermlezer
- Start de schermlezer
- Navigeer door de hele pagina
- Bepaal welke informatie alleen visueel beschikbaar is
- Bepaal welke relaties tussen elementen bestaan
- Inventariseer de visuele informatie en relaties
- Bepaal welke informatie wordt overgebracht via:
- Visuele positie
- Kleur of contrast
- Vorm of grootte
- Witruimte tussen elementen
- Inspringingen
- Bepaal welke informatie wordt overgebracht via:
- Controleer of visuele informatie ook in de code beschikbaar is:
- Of de informatie beschikbaar is met de schermlezer uitgeschakeld
- Of er alternatieve tekstuele informatie aanwezig is
Belangrijk om te weten
- Het overslaan van kopniveaus (bijvoorbeeld h1 naar h3) is geen fout als de hiërarchie logisch blijft
Beoordeling
- Tekst die er uit ziet als een kop moet zijn opgemaakt met een kop-element
- Tekst die geen kop is moet niet zijn opgemaakt met een kop-element
- De volgorde van koppen moet de betekenis van de pagina niet in de weg staan
- Tekst die er uit ziet als een lijst moet zijn opgemaakt met een lijst-element
- Tekst die geen lijst is moet niet zijn opgemaakt met een lijst-element
- Lijsten moeten juist genest zijn
- Tekst die er uit ziet als een tabel moet zijn opgemaakt met een tabel-element
- Tabelkoppen moeten worden opgemaakt met
<th> - Tabelcellen moet programmatisch zijn gekoppeld aan de bijbehorende koppen
- Presentatietabellen mogen geen
<th>,<caption>,summary,headersofscopebevatten
Bronnen
- WCAG 2.2 – Succescriterium 1.3.1 Info en relaties
- Page Structure Tutorial | Web Accessibility Initiative (WAI) | W3C (Engelstalig)
- Tables Tutorial | Web Accessibility Initiative (WAI) | W3C (Engelstalig)
- WebAIM: Semantic Structure: Regions, Headings, and Lists (Engelstalig)
- WebAIM: Creating Accessible Tables – Layout Tables (Engelstalig)
- WebAIM: Creating Accessible Tables – Data Tables (Engelstalig)