ToegankeliJk Logo ToegankeliJk Contact Ons
Contact Ons
Web Accessibility

Semantische HTML: de basis van toegankelijkheid

Waarom <button> beter is dan <div> en hoe je de juiste HTML-elementen kiest voor jouw interface.

12 min Beginner April 2026
Ontwikkelaar aan het werk met laptop en code-editor open op het scherm

Waarom semantische HTML belangrijk is

Veel ontwikkelaars schrijven HTML zonder echt na te denken over welk element ze gebruiken. Een knop? Dat wordt een <div> met JavaScript. Een navigatiestructuur? Ook wel een <div> met wat links erin. Het klinkt misschien efficiënt, maar dit leidt tot ernstige toegankelijkheidsproblemen.

Semantische HTML betekent dat je HTML-elementen kiest die daadwerkelijk betekenis hebben. Een <button> zegt: “Dit is een interactief element.” Een <nav> zegt: “Dit is navigatie.” Een <article> zegt: “Dit is artikelinhoud.” Schermlezers, zoekmachines en assistieve technologieën begrijpen deze betekenis en kunnen er mee werken.

Quick facts

  • 14,5 miljoen Nederlanders gebruiken dagelijks het web met beperkingen
  • Schermlezers navigeren via semantische elementen
  • 90% van toegankelijkheidsproblemen valt met HTML op te lossen

De basis: structurele elementen

Elk webdocument begint met structuur. Je hebt een kop (header), navigatie, inhoud, en een voettekst. Veel websites gebruiken overal <div>-elementen, wat voor het menselijk oog misschien oké is, maar schermlezers snappen niet wat ze zien.

Met semantische HTML kun je dit veel beter maken. Een <header> bevat introductieinhoud en navigatie. Een <nav> bevat navigatielinks. Een <main> bevat de kerninhoud van de pagina. Een <footer> bevat slotinhoud. Dit zijn geen willekeurige keuzes — deze elementen hebben specifieke betekenis.

Probeer het eens: open een website in je schermlezer (veel browsers hebben dit ingebouwd) en je zult zien hoe veel beter het werkt als de pagina goed semantisch opgebouwd is. Je kan direct naar de navigatie springen, rechtstreeks naar de hoofdinhoud gaan, zonder al die decoratieve divs.

HTML-structuur met semantische elementen: header, nav, main, article, footer in hiërarchisch diagram
Schermlezer-gebruiker navigeert website met toetsenbord, headings en landmarks zijn gemarkeerd

Buttons, links en interactieve elementen

Dit is waar het echt fout gaat. We zien constant <div>-elementen die zich gedragen als knoppen, maar technisch gezien helemaal geen knoppen zijn. Ze zien er misschien uit als knoppen, maar:

  • Toetsenbordgebruikers kunnen er niet op klikken (geen Tab-ondersteuning)
  • Schermlezers zeggen: “Dit is gewoon tekst,” niet “Dit is een knop”
  • Je moet zelf alle functionaliteit schrijven (Enter/Space afhandelen, etc.)

Een echte <button> geeft je al dit gratis. Toetsenbordnavigatie werkt automatisch. Schermlezers zeggen meteen “knop”. JavaScript wordt veel eenvoudiger. Dit is geen extra werk — het is minder werk.

“Een <button> gebruiken in plaats van een <div> is niet alleen beter voor toegankelijkheid. Het maakt je code schoner, je JavaScript eenvoudiger, en je website sneller. Het is een win-win.”

— Web Accessibility Initiative (WAI)

Headings: meer dan alleen grote tekst

Veel ontwerpers gebruiken <div> met CSS om koppen te maken. Ja, het ziet er goed uit. Maar schermlezers snappen niet dat het een kop is. Erger nog: gebruikers kunnen niet via koppennavigatie door je pagina springen.

Met <h1>, <h2>, <h3> enz. krijg je automatisch:

1

Koppennavigatie: Gebruikers kunnen direct naar onderwerpen springen

2

Beter SEO: Google begrijpt je paginastructuur beter

3

Schone CSS: Je hoeft geen naamgeving te bedenken voor pseudo-koppen

En je <h1> ziet er precies hetzelfde uit als je <div> — je voegt gewoon CSS toe. De enige verschil: het werkt nou voor iedereen.

Koppenstructuur weergegeven in outline: H1 als titel, H2 voor secties, H3 voor subsecties
Formulier met duidelijk gelabelde inputs en semantische HTML elementen

Formulieren: labels en associatie

Formulieren zijn waar het echt cruciaal wordt. Een <input> zonder <label> is ontoegankelijk. Ernstig. Schermlezers weten niet wat ze moeten invoeren. Toetsenbordgebruikers weten niet welk veld welke invoer verwacht.

Een <label> verbonden met een <input> (via het for-attribuut) geeft beide partijen informatie. Als je op het label klikt, springt de focus naar het veld. Schermlezers lezen het label voor. Dit is standaard HTML-functionaliteit — je hoeft niets extra te doen.

We spreken hier over 3-4 regels HTML. Niet meer. En het verschil is dag en nacht voor gebruikers met beperkingen. Dit is niet “nice to have” — dit is basis.

De toekomst is semantisch

Semantische HTML kost je niet meer tijd. Sterker nog: het bespaard je tijd. Je schrijft minder JavaScript. Je CSS wordt eenvoudiger. Je code is onderhoudsvriendelijker. En je website werkt voor iedereen — niet alleen voor mensen met perfecte zicht en een moderne browser.

Kies de juiste HTML-elementen. Niet omdat je moet. Omdat het beter is. Omdat het werkt. Dit is de basis van toegankelijkheid — en het is verrassend eenvoudig.

Ga aan de slag: bekijk je volgende project en vraag jezelf af: is dit werkelijk een <div>, of kan het een <button>, <nav>, of <article> zijn? Je gebruikers zullen het merken.

Disclaimer

Dit artikel bevat informatie over webtoegankelijkheid en semantische HTML volgens WCAG 2.1-standaarden. Hoewel we ernaar streven nauwkeurige informatie te verstrekken, kunnen wetgeving en standaarden variëren per regio. Voor specifieke rechtswetenschappelijke vragen of aangepaste implementaties voor je organisatie, adviseren we je om met toegankelijkheidsspecialisten en juridische experts te overleggen. Dit artikel is puur informatief en geen vervanging voor professioneel advies.