- Leren
- Informatica & ICT
- Programmeren
- HTML en CSS: responsieve, toegankelijke websites bouwen
- HTML-elementen en attributen
HTML-elementen en attributen voor webpagina's
BeginnerLes 2 van 8 in Cursus HTML en CSS: responsieve, toegankelijke websites bouwen
Wat je leert
- Lees en schrijf HTML-elementen en -attributen, maak een compleet document met de taal, codering en metadata en controleer de opmaakcode op fouten.
- Lees en schrijf elementen, tags en attributenHerken de onderdelen van een element, schrijf attributen correct, nest elementen op de juiste manier en weet hoe de browser met spaties en commentaar omgaat.
- Maak de basisstructuur van het document en vul het head-element inSchrijf de doctype, de elementen html, head en body en de metadata die elke pagina nodig heeft, en sla de bestanden op met namen die geschikt zijn voor het web.
- Geef de taal en tekencodering opGebruik het lang-attribuut om de taal van een pagina en van tekstgedeelten daarin op te geven. Gebruik UTF-8 zodat letters met accenten en andere schriften correct worden weergegeven.
- Controleer en verbeter je opmaakcodeZoek en verbeter HTML-fouten met een validator en de ontwikkelaarstools van de browser, en herken de fouten die beginners het vaakst maken.
- Lees en schrijf elementen, tags en attributen
- Deel tekst in met een duidelijke hiërarchie van koppen en alinea's, markeer betekenis binnen zinnen en presenteer items in het juiste soort lijst.
- Deel tekst in met koppen en alinea'sGebruik de zes kopniveaus voor een logische structuur, schrijf alinea's en gebruik regeleinden en thematische scheidingen alleen waar de inhoud die nodig heeft.
- Markeer nadruk, citaten en code binnen tekstKies het element op tekstniveau dat past bij de betekenis van een woord of woordgroep: nadruk, belang, citaten, afkortingen, code, datums en meer.
- Maak ongeordende lijsten, geordende lijsten en beschrijvingslijstenKies op basis van de betekenis tussen ongeordende lijsten, geordende lijsten en beschrijvingslijsten, nest lijsten correct en bepaal de nummering van geordende lijsten.
- Deel tekst in met koppen en alinea's
- Maak links naar andere websites, naar pagina's op je eigen website en naar plaatsen binnen een pagina, schrijf duidelijke linktekst en maak overzichtelijke navigatiemenu's.
- Maak links met absolute en relatieve URL'sSchrijf het ankerelement, kies tussen absolute en relatieve adressen en adressen vanaf de hoofdmap, en maak links naar secties, e-mailadressen en telefoonnummers.
- Schrijf duidelijke linkteksten en bepaal hoe links worden geopendSchrijf linktekst die de bestemming noemt, maak links naar downloads en afbeeldingen en bepaal wanneer een link op een nieuw tabblad moet openen.
- Maak navigatiemenu's en links binnen een paginaMaak websitemenu's, inhoudsopgaven, kruimelpaden en skiplinks met HTML en houd de navigatie op alle pagina's van een website consistent.
- Maak links met absolute en relatieve URL's
- Plaats afbeeldingen op een pagina met het juiste bestand, de juiste afmetingen en het juiste formaat, en geef elke afbeelding een tekstalternatief en waar nuttig een bijschrift.
- Voeg afbeeldingen in met het img-elementVoeg afbeeldingen toe met img, kies een geschikt bestandsformaat, geef de breedte en hoogte op en houd de bestandsgrootte binnen redelijke grenzen.
- Schrijf alternatieve teksten en voeg bijschriften toeSchrijf alternatieve tekst die past bij het doel van elke afbeelding, markeer decoratieve afbeeldingen correct en gebruik figure en figcaption voor bijschriften.
- Voeg afbeeldingen in met het img-element
- Verdeel een pagina in betekenisvolle gebieden, kies het juiste element voor elk inhoudsblok en combineer alles tot een complete, goed gestructureerde pagina.
- Markeer de belangrijkste paginagebieden met HTMLGebruik header, nav, main, aside en footer om de gebieden van een pagina te markeren en begrijp hoe die herkenningspunten worden voor hulptechnologie.
- Kies tussen article, section, div en spanBepaal of een inhoudsblok een artikel, een sectie of alleen een omhullend element voor vormgeving is en nest deze elementen en hun koppen correct.
- Maak een plan voor een volledige pagina en werk die uit in HTMLPlan de structuur van een pagina voordat je code schrijft en combineer daarna metadata, koppen, tekst, lijsten, links, afbeeldingen en paginagebieden tot één geldige pagina.
- Markeer de belangrijkste paginagebieden met HTML
HTML-elementen en attributen: uitleg
1Schrijf correct opgebouwde HTML-documenten
Elke pagina begint met tekst die de browser omzet in een boom van elementen. Leer die structuur lezen, attributen toevoegen en een document met de juiste metadata opbouwen. De taal- en coderingsinstellingen helpen dezelfde pagina om te gaan met verschillende soorten tekst. Je vergelijkt ook je broncode met het resultaat dat de browser heeft geparseerd en gebruikt een HTML-controleprogramma om fouten te vinden die bij een normale weergave verborgen kunnen blijven.
1.1 Elementen, attributen en nesten
HTML voorziet de onderdelen van een pagina van labels, zodat de browser de structuur kan opbouwen. Een kop, een alinea en een link hebben verschillende betekenissen, ook voordat je vormgeving toevoegt. HTML beschrijft de inhoud, CSS bepaalt de vormgeving en JavaScript voegt gedrag toe.
Lees een element
In <p>The workshop opens at noon.</p> is <p> de begintag, de zin de inhoud en </p> de eindtag. Het geheel is een alinea-element. De schuine streep markeert de eindtag. Gebruik elementnamen in kleine letters om je broncode consistent te houden, ook al accepteert HTML ook namen in hoofdletters.
Een attribuut voegt informatie toe binnen een begintag:
<a href="hours.html" title="Workshop opening hours">Opening hours</a>
Hier geeft href de bestemming en title adviserende tekst. Scheid attributen met spaties en zet hun waarden tussen rechte aanhalingstekens. De volgorde verandert hun betekenis niet. Aanhalingstekens houden een waarde bij elkaar: class="intro note" geeft twee klassenamen, terwijl class=intro note wordt gelezen als één klassewaarde en een afzonderlijk attribuut met de naam note.
Plaats elementen in elkaar
Een alinea kan een woord bevatten dat belangrijk is:
<p>Bring your <strong>booking number</strong>.</p>
Open de alinea, open het strong-element, sluit het strong-element en sluit dan de alinea. Sluit het laatst geopende element als eerste. De alinea is het ouderelement en het strong-element is het kindelement. Kindelementen en alles wat daarin staat, zijn afstammelingen. De browser organiseert deze relaties in de DOM, het Document Object Model, een boom van de inhoud van de pagina.
Niet elk element kan binnen elk ander element staan. Zo kan een lijst niet binnen een alinea staan. Inspringing helpt je de nesting te zien, maar extra spaties kunnen een ongeldige relatie tussen ouder- en kindelement niet geldig maken.
Herken bijzondere soorten elementen en attributen
Lege elementen hebben geen inhoud en geen eindtag. Voorbeelden zijn <img>, <br>, <hr>, <meta> en <link>. Schrijf <br>, zonder </br>. Een afsluitende schuine streep in <br /> heeft geen effect in HTML.
Een booleaans attribuut staat aan als het aanwezig is. Bij een geordende lijst laat reversed de nummering terugtellen. Als je reversed="false" schrijft, is het attribuut nog steeds aanwezig en telt de lijst dus nog steeds terug. Verwijder het attribuut om dit uit te schakelen.
Sommige attributen werken op verschillende elementen:
| Attribuut | Betekenis |
|---|---|
id | Eén unieke identificatie binnen de pagina, zonder spaties |
class | Eén of meer door spaties gescheiden namen die elementen mogen delen |
lang | De taal van de inhoud van het element |
title | Adviserende tekst, vaak getoond als knopinfo bij aanwijzen met de muis |
hidden | Markeert inhoud die momenteel niet wordt weergegeven |
Lees witruimte en commentaar in de broncode
In gewone tekst worden meerdere spaties, tabs of regeleinden in de broncode samengevoegd tot één spatie. Als je een alinea over drie regels broncode schrijft, krijg je op het scherm nog steeds één alinea. Gebruik elementen om structuur aan te geven en laat broncode inspringen om die leesbaar te maken.
Commentaar ziet eruit als <!-- Menu starts here -->. Het is verborgen op de weergegeven pagina, maar zichtbaar in de broncode. Zet nooit wachtwoorden of privégegevens in commentaar. Commentaar kan niet worden genest: de eerste --> beëindigt het commentaar.
Belangrijkste punten
- Een element omvat zijn tags en inhoud; attributen horen in de begintag.
- Zet attribuutwaarden tussen aanhalingstekens en sluit geneste elementen van binnen naar buiten.
- Lege elementen hebben geen eindtag.
- Een booleaans attribuut staat aan als het aanwezig is, ook als de waarde “false” zegt.
- Gebruik unieke id's en gedeelde klassenamen; gewone witruimte in de broncode wordt samengevoegd.
1.2 De basisstructuur en pagina-informatie van het document
Een complete pagina scheidt informatie over het document van de inhoud die mensen lezen. Begin met een kleine, consistente basisstructuur en voeg daarna de titel en body-inhoud van de pagina toe.
Maak de basisstructuur
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Opening Hours – Harbor Café</title>
</head>
<body>
<h1>Harbor Café</h1>
<p>Open every day except Monday.</p>
</body>
</html>
<!DOCTYPE html> vertelt de browser de standaardmodus te gebruiken, met de normale moderne weergaveregels. Het is een declaratie, geen element. Als je die weglaat, kan de compatibiliteitsmodus worden ingeschakeld, die ouder browsergedrag nabootst en de lay-out en afmetingen kan veranderen.
<html> is het hoofdelement. De twee kindelementen zijn <head> en <body>. Head bevat metadata, informatie over de pagina. Body bevat de zichtbare inhoud. Een <h1> hoort in body, ook als de browser de fout lijkt te herstellen wanneer je die in head zet.
Geef de pagina een identiteit
De <title> verschijnt op het browsertabblad, in bladwijzers en in de geschiedenis. Zoekmachines kunnen die ook als kop van een zoekresultaat gebruiken. Geef elke normale pagina precies één titel, binnen head. Zet het specifieke onderwerp eerst, gevolgd door de naam van de website, zoals “Openingstijden - Havencafé”. De zichtbare <h1> en de documenttitel zijn afzonderlijke elementen met verschillende functies.
Plaats <meta charset="utf-8"> als eerste in head. De volledige declaratie moet binnen de eerste 1.024 bytes van het bestand staan. Door de declaratie vroeg te plaatsen, kan de browser bepalen hoe de tekst moet worden gedecodeerd voordat die een groot deel van de pagina heeft gelezen.
De viewport-regel vraagt mobiele browsers om de apparaatbreedte te gebruiken voor de lay-out en een aanvankelijke zoom van 1. Zonder die regel gebruiken veel browsers een brede virtuele desktopviewport en verkleinen ze het resultaat, waardoor tekst klein lijkt. Deze regel bereidt het document voor op een mobiele lay-out; de vormgeving van de pagina bepaalt nog steeds hoe de inhoud past.
Koppel andere bronnen van de pagina
Veelvoorkomende toevoegingen aan head zijn:
<meta name="description" content="Fresh bread, coffee and lunch by the harbor.">
<link rel="icon" href="favicon.png">
<link rel="stylesheet" href="styles.css">
<script src="app.js" defer></script>
De beschrijving vat de pagina samen en kan in zoekresultaten verschijnen. Het pictogram levert de afbeelding op het tabblad. De stijlbladlink koppelt een CSS-bestand. Het script-element koppelt JavaScript; defer stelt de uitvoering uit totdat het document is geparseerd. Anders dan <link> en <meta> heeft <script> een eindtag nodig, ook als de inhoud leeg is.
Sla een webpaginabestand op
Sla tekst zonder opmaak in een code-editor op met de extensie .html. Een tekstverwerker kan opmaak toevoegen die niet in een HTML-bronbestand thuishoort. De standaardpagina van een map heet meestal index.html; de meeste webservers versturen die wanneer iemand het adres van de map opvraagt.
Kies namen in kleine letters met koppeltekens, zoals opening-hours.html. Spaties worden %20 in URL's en veel servers maken onderscheid tussen hoofdletters en kleine letters. Controleer of de editor je pagina niet als index.html.txt heeft opgeslagen. Open na het opslaan het HTML-bestand in de browser en vernieuw de pagina wanneer je een wijziging aanbrengt.
Belangrijkste punten
- Zet de doctype eerst, metadata in
<head>en pagina-inhoud in<body>. - Gebruik één specifieke
<title>en plaats de UTF-8-declaratie vroeg. - Neem het viewportmeta-element op voor mobiele apparaten.
<script>heeft een eindtag nodig;<meta>en<link>niet.- Sla
.html-bestanden op als tekst zonder opmaak met consistente namen in kleine letters;index.htmlis de gebruikelijke standaardpagina van een map.
1.3 Talen, UTF-8 en speciale tekens
De taal van tekst en de manier waarop de tekens worden opgeslagen, beantwoorden verschillende vragen. Een browser heeft beide nodig om de pagina correct te tonen, vooral als de inhoud accenten of meer dan één schrift bevat.
Geef de taal van de inhoud op
Schrijf de hoofdtaal op het hoofdelement: <html lang="en">. Schermlezers kunnen op basis hiervan de uitspraak kiezen en browsers kunnen de informatie gebruiken voor vertaling en spelling. Een taalcode begint met een code voor de taal. Een optioneel tweede deel kan een regio of schrift aangeven.
| Code | Taal van de inhoud |
|---|---|
en | Engels |
en-US | Engels zoals gebruikt in de Verenigde Staten |
en-GB | Brits-Engels |
fr-CA | Frans zoals gebruikt in Canada |
zh-Hans | Chinees in vereenvoudigde tekens |
De code beschrijft de inhoud, niet de locatie van de bezoeker. uk betekent Oekraïens en is dus niet de code voor Engels in het Verenigd Koninkrijk.
Markeer een taalwisseling op het dichtstbijzijnde geschikte element:
<p>Our host said <span lang="fr">bon appétit</span>.</p>
Alleen de Franse uitdrukking krijgt een Franse uitspraak. Bij een volledig citaat kun je de taal op de <blockquote> zetten. Een pagina die van rechts naar links loopt, heeft ook een basistekstrichting nodig, bijvoorbeeld <html lang="ar" dir="rtl">. Arabische letters lopen zonder dat attribuut nog steeds van rechts naar links, maar de basisrichting beïnvloedt de uitlijning van alinea's, leestekens en tekst met gemengde richtingen.
Zorg dat de opgeslagen bytes en de declaratie overeenkomen
Een tekencodering koppelt tekens aan opgeslagen bytes. UTF-8 kan alle Unicode-tekens weergeven, inclusief letters met accenten, andere schriften en emoji. HTML-documenten gebruiken UTF-8.
Er zijn twee stappen: sla het bestand zelf in de editor op als UTF-8 en plaats de declaratie <meta charset="utf-8"> vroeg in head. De declaratie vertelt de browser hoe die bytes moet lezen; de declaratie zet een bestand dat met een andere codering is opgeslagen niet om. Een coderingsdeclaratie van een server in de Content-Type-header heeft voorrang op het meta-element.
Als coderingen niet overeenkomen, levert dat vaak een aanwijzing op. UTF-8-tekst “Café” die als Windows-1252 wordt gelezen, kan “Café” worden omdat de twee bytes voor “é” afzonderlijk worden geïnterpreteerd. Een Windows-1252-bestand dat als UTF-8 wordt gelezen, kan juist “Caf�” tonen omdat de byte ongeldig is in UTF-8. Controleer de codering van de editor en de ontvangen documentinformatie van de browser voordat je afzonderlijke letters vervangt.
Toon tekens die HTML als syntaxis gebruikt
Gebruik tekenreferenties om letterlijke tekst te tonen die op een tag lijkt:
<p>Use <p> for paragraphs.</p>
De pagina toont “Use
for paragraphs.” De < moet als < worden weergegeven, zodat de browser geen tag begint. Elke benoemde referentie begint met & en eindigt met ;.
| Referentie | Weergegeven teken of effect |
|---|---|
< en > | Kleiner-dan- en groter-danteken |
& | En-teken |
" | Dubbel aanhalingsteken, nuttig binnen een attribuutwaarde tussen aanhalingstekens |
| Een spatie die een regeleinde voorkomt |
© | Auteursrechtsymbool |
Zo houdt 10 km het getal en de eenheid op dezelfde regel. Gewone tekens met accenten kun je direct in een UTF-8-bestand typen; je hebt geen aparte referentie nodig voor elk accent.
Belangrijkste punten
langgeeft de taal van de inhoud aan;dirstelt de basistekstrichting in.- Markeer een taalwisseling op het element dat het tekstgedeelte bevat.
- Sla het bestand op als UTF-8 en declareer UTF-8; een declaratie zet opgeslagen bytes niet om.
- Gebruik tekenreferenties wanneer een letterlijk teken voor HTML-syntaxis kan worden aangezien.
1.4 Fouten in opmaakcode opsporen en verbeteren
Een browser probeert een pagina weer te geven, ook als de HTML fouten bevat. Dat behulpzame herstel kan fouten verbergen. Daarom bekijk je bij het controleren van een pagina zowel de broncode die je schreef als de structuur die de browser heeft opgebouwd.
Vergelijk de broncode met de DOM
Paginabron bekijken toont de HTML die de browser heeft ontvangen. Het paneel Elementen of Inspector in de ontwikkelaarstools toont de DOM, de geparseerde boom die de browser gebruikt. De browser kan tijdens het parsen een element te vroeg hebben gesloten of inhoud naar een andere plaats hebben verplaatst.
Open de inspector door met de rechtermuisknop op de pagina te klikken en Inspecteren te kiezen, of gebruik de sneltoets voor de ontwikkelaarstools van je browser. Selecteer een weergegeven element en bekijk het ouderelement en de kindelementen. Zoek daarna hetzelfde gedeelte in de broncode. Verschillen kunnen onverwachte tussenruimte, links die te ver doorlopen of stijlen op de verkeerde elementen verklaren.
Volg een automatische reparatie
Stel dat je dit schrijft:
<p>Our soups:
<ul>
<li>Tomato</li>
<li>Lentil</li>
</ul>
</p>
Een alinea staat inhoud op tekstniveau toe, geen lijst. Bij <ul> aangekomen sluit de browser de alinea. De lijst wordt een afzonderlijk blok. De laatste </p> heeft geen open alinea om te sluiten, waardoor het parsen een extra lege alinea kan maken.
De gewenste reparatie hoort in de broncode:
<p>Our soups:</p>
<ul>
<li>Tomato</li>
<li>Lentil</li>
</ul>
Verplaats de eindtag van de alinea naar vóór de lijst. De DOM kan nu de bedoelde relatie weergeven zonder foutherstel.
Gebruik een HTML-controleprogramma
De W3C Nu Html Checker accepteert een pagina-adres, een geüpload bestand of geplakte HTML. Het programma meldt fouten en waarschuwingen met hun locatie. Begin met de eerste fout, verbeter die en voer de controle opnieuw uit. Eén ontbrekend aanhalingsteken kan veel latere meldingen veroorzaken, dus elke gemelde regel tegelijk aanpassen kan onnodig werk opleveren.
In <a href="about.html> ontbreekt bijvoorbeeld het afsluitende aanhalingsteken. De browser kan de daaropvolgende opmaakcode als deel van de attribuutwaarde behandelen. Door het aanhalingsteken te herstellen kunnen verschillende latere fouten verdwijnen. Ook kan een ontbrekende </a> ervoor zorgen dat tekst die er niets mee te maken heeft, deel van de link wordt.
Let vooral op:
- Elementen die in de verkeerde volgorde zijn gesloten of verkeerd gespelde namen zoals
<pargraph>. - Dezelfde
iddie twee keer op één pagina wordt gebruikt. - Een
<li>buiten de bijbehorende lijst. - Een afbeelding zonder
alt-attribuut. - Zichtbare inhoud die in head is geplaatst.
Controleer zowel betekenis als syntaxis
Een resultaat zonder meldingen vertelt je dat de geteste opmaakcode de regels van het controleprogramma volgt. Het programma kan niet bepalen of “Klik hier” bruikbare linktekst is of dat de alternatieve tekst van een afbeelding de juiste informatie geeft. Lees de pagina op volgorde en controleer die keuzes zelf.
Controleer voordat je een pagina afrondt de doctype, documenttaal, vroege UTF-8-declaratie en specifieke titel. Bekijk de kopniveaus, unieke id's, tekstalternatieven voor afbeeldingen en linkbestemmingen. Open de pagina in minstens twee browsers en volg de links. Een geldig relatief pad kan nog steeds naar een ontbrekend bestand verwijzen; een syntaxiscontrole alleen ontdekt dat niet.
Belangrijkste punten
- Door foutherstel van de browser kan ongeldige HTML toch lijken te werken.
- Vergelijk de ontvangen broncode met de geparseerde DOM om herstel te vinden.
- Verbeter de eerste fout van het controleprogramma en controleer opnieuw voordat je latere meldingen onderzoekt.
- Controleer na de syntaxis zelf de betekenis van de inhoud, de afbeeldingen en de bestemmingen.
2Structureer tekst met koppen, alinea's en lijsten
Een duidelijke tekststructuur helpt mensen een pagina snel door te nemen en te begrijpen hoe de ideeën samenhangen. Koppen en alinea's vormen de structuur; elementen op tekstniveau voegen daarbinnen betekenis toe. Lijsten groeperen items en volgordes zonder afhankelijk te zijn van zichtbare tussenruimte. Ga bij de keuze van een element uit van het doel van de inhoud, ook wanneer standaard vette tekst, opsommingstekens of regeleinden in de browser verschillende keuzes op elkaar laten lijken.
2.1 Koppen, alinea's en scheidingen
Koppen geven lezers een overzicht van de pagina. Alinea's bevatten samenhangende zinnen binnen dat overzicht. Kies de elementen op basis van de structuur van de inhoud en laat CSS daarna de vormgeving bepalen.
Maak een koppenoverzicht
HTML heeft zes kopniveaus, van <h1> tot en met <h6>. Gebruik één <h1> voor het hoofdonderwerp van de pagina, <h2> voor de hoofdsecties en <h3> voor onderdelen binnen een <h2>-sectie. De meeste pagina's hebben maar een paar niveaus nodig.
<h1>Growing Basil at Home</h1>
<p>Basil grows well on a sunny windowsill.</p>
<h2>Planting</h2>
<p>Sow the seeds 0.5 cm deep in moist soil.</p>
<h2>Care</h2>
<h3>Watering</h3>
<p>Water when the top of the soil feels dry.</p>
<h3>Harvesting</h3>
<p>Pick the top leaves first.</p>
Lees alleen de koppen. “Planten” en “Verzorging” zijn gelijkwaardige hoofdsecties. “Water geven” en “Oogsten” vallen onder “Verzorging”. Dit overzicht blijft bruikbaar wanneer een schermlezer de koppen opsomt of wanneer een lezer de pagina snel doorneemt.
Een kop mag maar één niveau dieper zijn dan de vorige kop: gebruik na <h1> een <h2>, geen <h3>. Als je terug omhoog gaat, mag je meerdere niveaus overslaan. Een <h2> na een <h4> begint een nieuwe hoofdsectie. Kopniveaus volgen het hele document, ook de inhoud binnen secties en artikelen.
De HTML-standaard staat meerdere koppen op het hoogste niveau toe, maar één <h1> als hoofdkop is het gebruikelijke, duidelijke patroon. Kies <h4> niet alleen omdat de standaardtekst kleiner is. Een vette alinea kan op een kop lijken, maar verschijnt niet in de koppenlijst van een schermlezer.
Onderscheid een ondertitel van een sectie
Een slogan beschrijft de kop ernaast; die leidt geen nieuwe sectie in. Groepeer een kop en ondertitel in <hgroup>:
<hgroup>
<h1>Harbor Café</h1>
<p>Fresh bread every morning</p>
</hgroup>
De alinea blijft een ondertitel. Als je er een <h2> van maakt, komt die ten onrechte als hoofdsectie in het koppenoverzicht van de pagina te staan.
Gebruik alinea's voor samenhangende zinnen
Een <p>-element bevat een alinea. Begin een nieuwe alinea wanneer het onderwerp of de stap in de uitleg verandert. Browsers voegen standaard zichtbare ruimte rond alinea's toe.
Als je in gewone HTML-broncode op Enter drukt, maak je geen nieuwe weergegeven alinea. Ook zijn lege <p>-elementen geen middel om tussenruimte te maken. Houd de structuur betekenisvol en stel extra ruimte in met CSS.
Kies een scheiding op basis van betekenis
| Element | Gebruik |
|---|---|
<br> | Een regeleinde dat bij de tekst hoort, zoals in een gedicht of postadres |
<hr> | Een thematische scheiding, zoals een wisseling van scène |
Bij een adres houdt <p>Harbor Café<br>12 Quay Street<br>Port Town</p> de regels bij elkaar als één alinea. Meerdere <br>-elementen tussen gewone alinea's verwarren de inhoudsstructuur met tussenruimte. Een horizontale lijn die door <hr> wordt getekend, geeft een verandering van onderwerp aan; kies het element om die betekenis, niet alleen om de pagina te versieren.
Belangrijkste punten
- Kopniveaus drukken hiërarchie uit; gebruik één
<h1>als hoofdkop en beschrijvende sectiekoppen. - Sla geen kopniveau over wanneer je dieper in het overzicht gaat.
- Gebruik
<hgroup>met een alinea voor een ondertitel. - Gebruik
<p>voor alinea's,<br>voor regeleinden in de inhoud en<hr>voor veranderingen van onderwerp.
2.2 Betekenis binnen tekst
Tekstelementen vertellen de browser wat een woord of tekstgedeelte betekent. Hun standaardweergave in vet, cursief of met inspringing is alleen een beginstijl. Kies eerst de betekenis.
Maak onderscheid tussen nadruk, belang en aandacht
| Element | Betekenis | Voorbeeld |
|---|---|---|
<em> | Nadruk die beïnvloedt hoe een zin wordt begrepen | I <em>did</em> lock the door. |
<strong> | Belang, ernst of urgentie | <strong>Warning:</strong> |
<i> | Afwijkend tekstgebruik, een technische term of een uitdrukking in een andere taal | <i lang="la">Homo sapiens</i> |
<b> | Aandacht zonder extra belang | Een productnaam in een recensie |
Als je de nadruk in de voorbeeldzin verplaatst, verandert wat de spreker corrigeert. Belangrijke tekst heeft een andere functie: een waarschuwing is belangrijk ongeacht hoe de zin wordt uitgesproken. Gebruik CSS als je alleen een visuele stijl wilt.
Markeer citaten en hun bronnen
Een lang citaat gebruikt <blockquote>. Het optionele cite-attribuut geeft een bron-URL, maar dat adres wordt niet automatisch weergegeven. Zet een zichtbare bronvermelding buiten het citaat:
<blockquote cite="https://example.com/interview">
<p>The garden is open to everyone.</p>
</blockquote>
<p>From <cite>A Conversation About the Garden</cite>.</p>
<cite> markeert de titel van een werk, niet de naam van een persoon. Een kort citaat binnen een zin gebruikt <q> en de browser zorgt voor de aanhalingstekens. Typ geen tweede paar rond dezelfde woorden.
Een afkorting kan <abbr title="World Health Organization">WHO</abbr> gebruiken. Schrijf de volledige vorm ook zichtbaar wanneer die voor het eerst voorkomt. Knopinfo alleen is op aanraakschermen moeilijk toegankelijk en is niet voor elke lezer een betrouwbare uitleg.
Toon code en behoud de witruimte
<code> duidt een kort stuk code binnen een zin aan. Combineer het met <pre> voor een blok waarin spaties en regeleinden van belang zijn:
<pre><code><p>Welcome.</p></code></pre>
De lezer ziet de letterlijke opmaakcode van de alinea. <pre> behoudt de opmaak, maar schakelt het parsen van HTML niet uit. Je moet < nog steeds als < en een en-teken als & weergeven als ze als tekst moeten verschijnen. Anders kan een codevoorbeeld worden geïnterpreteerd als daadwerkelijke opmaakcode van de pagina.
Markeer datums, notatie en andere nuttige betekenissen
<sub> en <sup> geven subscript en superscript aan waar de notatie die nodig heeft: H<sub>2</sub>O en m<sup>2</sup>. Ze zijn geen hulpmiddelen om andere tekst kleiner te maken.
<time> verbindt leesbare datum- of tijdtekst met een machineleesbare waarde:
<time datetime="2026-03-14">March 14, 2026</time>
De waarde van datetime gebruikt jaar-maand-dag. Een tijd kan de 24-uurswaarde 14:30 gebruiken, ook als de zichtbare tekst “2:30 p.m.” zegt.
Gebruik <mark> voor tekst die is gemarkeerd omdat die in de huidige context relevant is, zoals een gevonden zoekterm. <small> bevat opmerkingen terzijde of kleine lettertjes. Een <span> heeft geen ingebouwde betekenis; het is nuttig voor een taalattribuut of als aangrijpingspunt voor vormgeving binnen een regel.
Belangrijkste punten
- Gebruik nadruk voor klemtoon en strong voor belang.
- Gebruik
<i>en<b>voor hun betekenis, niet alleen voor hun standaardvormgeving. <blockquote>en<q>markeren citaten;<cite>markeert de titel van een werk.- Schrijf afkortingen zichtbaar voluit, ook als een title op
abbrde volledige vorm geeft. <pre>behoudt witruimte maar parset nog steeds HTML; schrijf letterlijke codetekens als tekenreferenties.- Gebruik
<time>met een machineleesbare waarde en notatie-elementen waar hun betekenis past.
2.3 Lijsten en hun structuur
Een echte lijst geeft samenhangende items een gezamenlijke structuur. Dankzij de opmaakcode horen lezers dat ze bij een lijst komen en hoeveel items die bevat. Het soort lijst hangt af van de betekenis van de items.
Kies het lijsttype
Gebruik <ul> voor items waarvan de volgorde de betekenis niet verandert, zoals ingrediënten. Gebruik <ol> voor een reeks of rangorde waarbij de volgorde belangrijk is. Beide bevatten lijstitems die met <li> zijn gemarkeerd.
<ol>
<li>Boil the water.</li>
<li>Add the pasta.</li>
<li>Cook for 10 minutes.</li>
</ol>
Als je deze stappen omdraait, veranderen de instructies. Daarom past een geordende lijst. Een browser toont normaal gesproken nummers voor <ol> en opsommingstekens voor <ul>. CSS kan die markeringen veranderen; de betekenis van de lijst blijft hetzelfde.
Maak geen schijnlijst met getypte streepjes en regeleinden. Die tekens kunnen er hetzelfde uitzien, maar vertellen een schermlezer niet dat de items een lijst vormen. Een navigatiemenu gebruikt vaak een ongeordende lijst, terwijl een kruimelpad een geordende lijst gebruikt omdat het pad een volgorde heeft.
Nest een lijst binnen het bijbehorende item
Bij gewone lijstinhoud zijn de directe kindelementen van <ul> en <ol> de <li>-elementen. Plaats er niet rechtstreeks een alinea of een andere lijst tussen. De standaard staat ook elementen toe die scripts ondersteunen, maar die vervangen geen lijstitems.
Een geneste lijst hoort binnen het item dat die beschrijft:
<ul>
<li>Fruit
<ul>
<li>Apples</li>
<li>Pears</li>
</ul>
</li>
<li>Vegetables</li>
</ul>
Open eerst het item “Fruit”. Voeg de geneste lijst toe, sluit die lijst en sluit daarna het item “Fruit”. Nu zijn “Apples” en “Pears” structureel verbonden met “Fruit”. Als je de binnenste <ul> na de </li> van het bovenliggende item plaatst, gaat die relatie verloren. Een <li> kan ook alinea's, links en afbeeldingen bevatten.
Bepaal betekenisvolle nummering
Een geordende lijst kan een telling voortzetten of omkeren:
| Opmaakcode | Effect |
|---|---|
<ol start="4"> | De eerste twee gewone items krijgen nummer 4 en 5 |
<ol reversed> | Telt af; vijf items beginnen bij 5, tenzij een startwaarde is ingesteld |
<li value="10"> | Geeft dat item nummer 10; latere items tellen vanaf daar verder |
<ol type="a"> | Gebruikt letters als markering wanneer het type markering van belang is |
reversed is booleaans. Het blijft ingeschakeld in reversed="false"; verwijder het om weer op te tellen. Met type kies je met de waarden 1, a, A, i en I gangbare nummervormen. Gebruik een betekenisvolle vorm van markering wanneer tekst elders naar een specifiek label verwijst, zoals bepaling “b”.
Koppel termen en beschrijvingen
Een beschrijvingslijst gebruikt <dl>, met <dt> voor een term of naam en <dd> voor de beschrijving of waarde:
<dl>
<dt>Opening time</dt>
<dd>08:30</dd>
<dt>Closing time</dt>
<dd>17:00</dd>
</dl>
Eén term kan meerdere beschrijvingen hebben en meerdere termen kunnen één beschrijving delen. Een groep kan in een <div> worden geplaatst. Gebruik deze structuur voor relaties tussen namen en waarden, zoals een begrippenlijst of productgegevens, in plaats van die paren in losse opsommingsitems te dwingen.
Belangrijkste punten
- Gebruik
<ul>als de volgorde niet uitmaakt,<ol>als die wel uitmaakt en<dl>voor naam-beschrijvingsparen. - Plaats gewone inhoud van ongeordende en geordende lijsten in
<li>-elementen. - Een geneste lijst hoort binnen het bovenliggende lijstitem.
start,reversed,valueentypebepalen de markeringen van geordende lijsten.- Echte lijstopmaak bewaart relaties die getypte opsommingstekens niet kunnen uitdrukken.
3Verbind pagina's met links en maak navigatie
Links verbinden een pagina met de rest van de website en het bredere web. Hun adressen moeten werken vanuit de map waarin de pagina daadwerkelijk staat en de tekst moet duidelijk maken waar ze naartoe leiden. Navigatie maakt van die afzonderlijke links bruikbare menu's, inhoudsopgaven en snelkoppelingen. Volg bestemmingen zorgvuldig en maak de pagina vervolgens voorspelbaar voor mensen die een muis, toetsenbord of schermlezer gebruiken.
3.1 Linkbestemmingen en mappaden
Een link verbindt inhoud met een bestemming. De browser bepaalt die bestemming op basis van het adres dat je in href zet. De juiste soort URL kiezen hoort dus bij het schrijven van de link.
Schrijf een anker
<a href="https://www.w3.org/">World Wide Web Consortium</a>
Het <a>-element is een anker. De href geeft de bestemming en de inhoud is de aanklikbare linktekst. Een anker zonder href is een plaatsaanduiding, geen werkende hyperlink. Een afbeelding kan ook de inhoud zijn.
Een absolute URL geeft een URL-schema en domeinnaam, zoals in https://example.com/guide/. Gebruik die om naar een andere website te linken. In href="www.example.com" ontbreekt een URL-schema, dus de browser behandelt dit als een relatief bestandspad; het betekent niet “open die website”.
Werk vanuit de huidige map
Een relatieve URL begint bij de locatie van de huidige pagina. Bekijk deze website:
site/
index.html
about.html
recipes/
index.html
soup.html
images/
logo.png
Vanaf de beginpagina bereik je met about.html de naastgelegen informatiepagina en ga je met recipes/soup.html de receptenmap in. Vanaf recipes/soup.html zou dezelfde about.html binnen recipes/ zoeken, waar zo'n bestand niet staat.
Volg het pad van recipes/soup.html naar het logo:
- De beginmap is
recipes/. ../gaat omhoog naar de websitemap.images/gaat de afbeeldingenmap in.logo.pnggeeft de naam van het bestand.
Het volledige pad is ../images/logo.png. Elke extra ../ gaat nog één map omhoog. Vanaf de soeppagina bereik je met index.html juist de receptenindex, niet de beginpagina van de website.
Een URL vanaf de hoofdmap begint met /, zoals /about.html. Op een webserver begint die bij de hoofdmap van de website, ongeacht de map van de huidige pagina. Als je de bestanden rechtstreeks vanaf de schijf opent, verwijst die schuine streep naar de hoofdmap van het bestandssysteem en dus niet naar de websitemap van je project. Gebruik gewone relatieve paden voor pagina's die je ook rechtstreeks vanaf de schijf test.
Paden gebruiken schuine strepen naar rechts en moeten overeenkomen met de bestandsnamen en het gebruik van hoofdletters en kleine letters. Veel servers behandelen Soup.html en soup.html als verschillende bestanden. Een maplink zoals recipes/ vraagt een server normaal gesproken om het standaardbestand, meestal index.html; als je rechtstreeks vanaf de schijf bladert, kan een mapoverzicht verschijnen.
Spring naar een deel van een pagina
<a href="#watering">Watering</a>
<h2 id="watering">Watering</h2>
Het fragment begint in de URL met #. De id van het doel heeft geen # en moet exact overeenkomen. Voor een andere pagina combineer je ze: basil.html#watering. Een leeg fragment # gaat naar de bovenkant. Ook #top gaat naar de bovenkant als er geen overeenkomend element wordt gevonden.
Open een e-mail- of telefoonbestemming
mailto:info@example.com vraagt de e-mailapp van de bezoeker om een bericht op te stellen. Een onderwerp kan worden opgenomen als mailto:info@example.com?subject=Table%20booking, waarbij de spatie als %20 is gecodeerd. tel:+15555550123 geeft een telefoonbestemming in internationaal formaat. Het zichtbare telefoonnummer mag spaties bevatten, ook al bevat deze href die niet.
Belangrijkste punten
- Gebruik
<a href="...">voor een werkende hyperlink. - Een absolute URL noemt het URL-schema en de domeinnaam; een relatieve URL begint bij de huidige map.
- Elke
../gaat één map omhoog; een/aan het begin start bij een hoofdmap op de server. - Een fragment komt overeen met een unieke
id, met#alleen in de URL. mailto:entel:geven e-mail- en telefoonbestemmingen aan.
3.2 Duidelijke linktekst en voorspelbaar gedrag
Een bruikbare link vertelt iemand wat die kan verwachten voordat die de link volgt. De tekst, bestemming en manier van openen werken samen, ook wanneer de link afzonderlijk wordt voorgelezen in de linklijst van een schermlezer.
Noem de bestemming
Vergelijk deze links:
| Onduidelijke tekst | Bruikbare tekst |
|---|---|
| “Klik hier” | “Onze lunchkaart” |
| “Lees meer” | “Lees de aankondiging van de opening van het terras” |
| “Download” | “Lunchkaart (PDF, 2 MB)” |
Houd linktekst kort maar specifiek. Laat twee links met dezelfde tekst naar dezelfde bestemming leiden. Een kale URL is meestal moeilijker te lezen dan een beschrijving, al is een e-mailadres bruikbare linktekst wanneer het adres zelf de informatie is.
Knopinfo via title kan onduidelijke zichtbare tekst niet herstellen. Gebruikers van een aanraakscherm zien de knopinfo mogelijk nooit en toegang via het toetsenbord is niet betrouwbaar. Zet belangrijke informatie over de bestemming in de daadwerkelijke inhoud van de link.
Geef bestanden en downloads aan
<a href="menu.pdf" download="harbor-cafe-menu.pdf">Lunch menu (PDF, 2 MB)</a>
De tekst geeft het bestandstype en de bestandsgrootte aan. Het download-attribuut vraagt de browser het bestand op te slaan en stelt een bestandsnaam voor. Het zet een pagina niet om in een PDF. Voor gewone links naar webbestanden moet de bestemming dezelfde oorsprong hebben om download toe te passen; speciale blob:- en data:-URL's worden ook ondersteund. Browserinstellingen en serverheaders kunnen het uiteindelijke gedrag beïnvloeden. Het attribuut is dus een verzoek, geen garantie voor één specifiek dialoogvenster.
Laat mensen nieuwe tabbladen zelf beheren
Gewone links openen in de huidige browsercontext, waar je met de knop Vorige naar de vorige pagina kunt teruggaan. target="_blank" vraagt om een nieuw tabblad of venster. Het nieuwe tabblad heeft niet de geschiedenis voor de knop Vorige van het oorspronkelijke tabblad en een bezoeker merkt de wisseling mogelijk niet op.
Gebruik alleen een nieuw tabblad als dat een duidelijk doel dient en kondig het aan in de tekst:
<a href="https://example.com/archive" target="_blank" rel="noopener">Archive (opens in a new tab)</a>
Moderne browsers geven _blank-links de bescherming van noopener: de geopende pagina kan window.opener niet gebruiken om de oorspronkelijke pagina aan te sturen. Door rel="noopener" expliciet te schrijven, houd je ook rekening met ouder gedrag. noreferrer onderdrukt daarnaast informatie over de verwijzende pagina. nofollow geeft een relatie voor zoekmachines aan, geen navigatiebestemming.
Maak afbeeldingslinks en grotere links begrijpelijk
Als een afbeelding de enige inhoud van een link is, levert de alternatieve tekst de naam van de link:
<a href="index.html">
<img src="logo.png" alt="Harbor Café home page">
</a>
De bruikbare informatie is waar de link naartoe gaat. Als je alleen de kleuren van het logo beschrijft, noem je de bestemming niet.
Een anker kan een grotere kaart met een kop en alinea omvatten, maar mag geen andere link of knop bevatten. Geneste interactieve bedieningselementen geven concurrerende bestemmingen of acties binnen één bedieningselement.
Een link gaat ergens naartoe: een pagina, een bestand of een sectie van een pagina. Een knop voert een actie uit, zoals het openen van een menu. href="#" is een link naar de bovenkant van de pagina; het vervangt geen knop die een actie uitvoert.
Belangrijkste punten
- Linktekst moet de bestemming noemen en op zichzelf begrijpelijk zijn.
- Vermeld het type van gekoppelde bestanden en nuttige informatie over de bestandsgrootte.
- Kondig aan dat een link op een nieuw tabblad opent;
noopenerbeschermt de oorspronkelijke pagina. - Bij een link met alleen een afbeelding noemt de alternatieve tekst de bestemming.
- Houd interactieve bedieningselementen gescheiden: geen links of knoppen binnen een link.
- Gebruik links voor bestemmingen en knoppen voor acties.
3.3 Menu's, inhoudsopgaven en skiplinks
Navigatie helpt mensen zowel de gewenste pagina van de website als het benodigde deel van een lange pagina te vinden. HTML kan deze groepen aanduiden, zodat mensen die hulptechnologie gebruiken ze direct kunnen vinden.
Geef belangrijke navigatie een gebied
Gebruik <nav> rond een belangrijke groep navigatielinks. Een websitemenu bevat meestal een ongeordende lijst:
<nav aria-label="Main">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="menu.html" aria-current="page">Menu</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</nav>
Deze opmaakcode hoort op de menupagina: aria-current="page" duidt de link naar de huidige weergegeven pagina aan. Verplaats dat attribuut op de contactpagina naar de link Contact. Markeer de index van een sectie niet als huidige pagina wanneer de lezer een andere pagina binnen die sectie bekijkt.
De lijst maakt het aantal links en hun groepering beschikbaar voor schermlezers. Zonder CSS staan de menu-items onder elkaar. Het <nav>-element zet ze niet automatisch naast elkaar. Een paar niet-samenhangende links in de voettekst hebben meestal geen eigen navigatiegebied nodig.
Houd menu's consistent op alle pagina's
Gebruik op de hele website dezelfde items in dezelfde volgorde en op dezelfde plaats. Als je het menu op een statische HTML-website kopieert, moet je elk exemplaar bijwerken wanneer de inhoud verandert.
Controleer bestemmingen vanuit de werkelijke map van elke pagina. Vanaf recipes/soup.html is de link naar de beginpagina ../index.html; index.html zou naar de receptenindex gaan. De woorden in het menu kunnen gelijk blijven terwijl de relatieve paden veranderen. Een website op een server kan paden vanaf de hoofdmap gebruiken om die afhankelijkheid van de map te voorkomen.
Maak een inhoudsopgave
Een inhoudsopgave linkt naar koppen op de huidige pagina:
<nav aria-label="Contents">
<ol>
<li><a href="#planting">Planting</a></li>
<li><a href="#care">Care</a></li>
</ol>
</nav>
<h2 id="planting">Planting</h2>
Elk fragment moet overeenkomen met één unieke id. Voeg voor de tweede link een bijbehorende kop met id="care" toe. Wanneer meerdere navigatiegebieden verschillende functies hebben, kunnen gebruikers van een schermlezer ze onderscheiden met labels zoals “Main” en “Contents”.
Een kruimelpad is een andere vorm van navigatie. Het toont een pad zoals “Home › Recepten › Tomatensoep”. Gebruik <nav aria-label="Breadcrumb"> met een geordende lijst en plaats de huidige pagina als laatste. De volgorde geeft het pad door de website weer.
Bied een snelkoppeling langs herhaalde inhoud
Zet een skiplink als eerste in body:
<a href="#main-content">Skip to main content</a>
Het doel is het hoofdinhoudsgebied, geschreven als <main id="main-content">. Toetsenbordgebruikers kunnen die link volgen om een herhaald menu over te slaan. Houd de doel-id uniek en schrijf die precies zoals in het fragment. Een skiplink is al een werkend navigatiehulpmiddel voordat CSS de weergave verandert.
Belangrijkste punten
- Gebruik
<nav>voor belangrijke navigatie, met echte lijsten en links. aria-current="page"markeert de link naar de daadwerkelijk weergegeven pagina.- Houd menu's consistent en controleer gekopieerde relatieve paden opnieuw.
- Geef verschillende navigatiegebieden een label en laat fragmenten in inhoudsopgaven overeenkomen met unieke id's.
- Zet een skiplink als eerste in body en laat die naar de hoofdinhoud verwijzen.
4Voeg afbeeldingen toe die iedereen kan begrijpen
Afbeeldingen hebben meer nodig dan een bestandsnaam. De browser heeft een correct adres en afmetingen nodig, terwijl lezers de informatie nodig hebben die de afbeelding overbrengt. Bestandsformaat en compressie beïnvloeden hoe snel de pagina laadt; alternatieve tekst en bijschriften beïnvloeden hoe goed de betekenis zonder de afbeelding behouden blijft. Kies elk onderdeel op basis van het doel van de afbeelding, of die nu nuttige informatie toont, ergens naartoe linkt of de pagina alleen versiert.
4.1 Afbeeldingsbestanden, afmetingen en laden
Een afbeelding in HTML blijft een afzonderlijke bron. De pagina vertelt de browser welk bestand die moet ophalen, hoeveel ruimte die moet reserveren en welke tekst de afbeelding kan vervangen.
Voeg een afbeelding toe
<img src="images/harbor.jpg" alt="Fishing boats moored in the harbor at sunset" width="1200" height="800">
<img> is een leeg element en heeft dus geen eindtag. src geeft een bestandsadres, met dezelfde padregels als bij links. alt biedt een tekstalternatief. Als de afbeelding niet verschijnt, controleer dan de map, het gebruik van hoofdletters en kleine letters en de bestandsextensie in src. Een .jpg-pad verwijst niet naar een .png-bestand en .JPG kan op een server verschillen van .jpg.
De bytes van de afbeelding worden niet in dit HTML-element opgeslagen. De browser downloadt het bestand afzonderlijk. Als je de breedte in HTML verandert, wordt het gedownloade bestand niet kleiner.
Kies een formaat dat bij de inhoud past
| Formaat | Nuttige eigenschappen |
|---|---|
| JPEG | Compacte foto's; compressie met verlies en geen transparantie |
| PNG | Scherpe afbeeldingen en schermafbeeldingen; compressie zonder verlies en transparantie |
| GIF | Eenvoudige animatie met een beperkt palet van maximaal 256 kleuren |
| SVG | Vectorlogo's, pictogrammen en diagrammen die scherp blijven bij schalen |
| WebP en AVIF | Moderne formaten die de bestandsgrootte bij vergelijkbare kwaliteit vaak verkleinen |
De huidige grote browsers ondersteunen WebP en AVIF. Kies een afbeelding op basis van de inhoud en de resulterende bestandsgrootte, niet alleen van de extensie. Compressie met verlies verwijdert detail om ruimte te besparen; compressie zonder verlies behoudt de oorspronkelijke afbeeldingsgegevens.
Reserveer de juiste vorm
De attributen width en height zijn hele getallen in CSS-pixels, zonder eenheid in de waarde. Schrijf width="1200", niet width="1200px". Hiermee kan de browser ruimte reserveren voordat het bestand binnenkomt. Dat vermindert lay-outverschuivingen, waarbij tekst verspringt als een afbeelding laadt.
Een afbeelding van 1.200 × 800 heeft een verhouding van 3:2. Zowel width="1200" height="800" als width="600" height="400" behoudt die verhouding. Het tweede paar halveert beide afmetingen. Een paar van 600 × 600 dwingt een vierkant af en vervormt de afbeelding. CSS kan later de weergegeven afmetingen bepalen met behoud van de verhouding.
Verklein het bestand vóór gebruik
Een telefoonfoto van 4.000 × 3.000 heeft 12 miljoen pixels en kan meerdere megabytes innemen. Pas de afmetingen aan tot ongeveer de grootste beoogde weergavegrootte en kies een passende compressie voordat je de foto aan de website toevoegt. Anders downloadt elke lezer het grote bestand, ook als de pagina een kleine miniatuur toont.
Voor afbeeldingen verderop op een lange pagina laat loading="lazy" de browser wachten totdat de bezoeker in de buurt komt. Laat een direct zichtbare banner of hoofdafbeelding normaal laden, omdat uitstel de eerste weergave van de pagina kan vertragen.
Gebruik afbeeldingen die van jou zijn, waarvoor je toestemming hebt of die je volgens hun licentie mag hergebruiken, met de eventueel vereiste naamsvermelding. Bewaar websiteafbeeldingen in je eigen websitemap, zodat wijzigingen in bestanden op een andere website ze niet onbruikbaar maken. Inhoudelijke afbeeldingen horen in HTML; puur decoratieve achtergrondtexturen worden meestal met CSS geregeld.
Belangrijkste punten
srcverwijst naar een afzonderlijk bestand;<img>heeft geen eindtag.- Kies het formaat op basis van de inhoud en bestandsgrootte van de afbeelding.
- Gebruik numerieke waarden voor breedte en hoogte met de juiste beeldverhouding.
- Pas de afmetingen van het bestand zelf aan en comprimeer het; weergaveafmetingen verkleinen de download niet.
- Laad afbeeldingen verderop op de pagina uitgesteld en gebruik afbeeldingen met de juiste toestemming voor hergebruik.
4.2 Alternatieve tekst, het doel van afbeeldingen en bijschriften
Alternatieve tekst geeft de informatie die iemand nodig heeft wanneer die een afbeelding niet kan zien. Een bijschrift biedt zichtbare context voor iedereen. Beide keuzes beginnen bij het doel van de afbeelding op deze specifieke pagina.
Beschrijf de bruikbare informatie
Beschrijf bij een foto die lezers helpt een plaats te begrijpen wat van belang is: alt="The café's terrace with six tables overlooking the harbor". Een lange opsomming van elk object is zelden nuttig. Meestal is “Afbeelding van” niet nodig, omdat schermlezers de rol van de afbeelding al aankondigen. Het medium kan wel van belang zijn, zoals in “Aquarel van de haven”.
De context verandert welk alternatief bruikbaar is. Op een adoptiepagina zijn misschien de kenmerken van een hond belangrijk. Op de bezoekerspagina van een park kan dezelfde foto overbrengen dat honden welkom zijn op het grasveld. Vraag je af welke informatie een lezer zou missen als de afbeelding verdween.
Geef bij een grafiek de belangrijkste boodschap en plaats gedetailleerde gegevens in de buurt. Alternatieve tekst kan bijvoorbeeld vermelden dat het aantal websitebezoeken steeg van 1.200 in januari naar 3.000 in maart. De omliggende tekst kan de volledige cijfers geven. Een gefotografeerd bord of een andere afbeelding van tekst heeft de relevante woorden in het tekstalternatief nodig.
Maak onderscheid tussen informatieve, decoratieve en functionele afbeeldingen
| Doel van de afbeelding | Aanpak voor alternatieve tekst |
|---|---|
| Geeft informatie | Beschrijf die informatie in de context |
| Voegt alleen versiering toe | Gebruik een lege waarde, alt="" |
| Staat alleen binnen een link | Noem de bestemming of functie |
| Toont betekenisvolle tekst | Neem de getoonde woorden op |
Een lege alt-waarde is een bewuste instructie om een decoratieve afbeelding over te slaan. Het attribuut weglaten is iets anders: sommige schermlezers kondigen dan mogelijk de bestandsnaam aan. Gebruik een alt-attribuut op elke afbeelding die je toevoegt.
Een logo dat de enige inhoud is van een link naar de beginpagina, heeft een bruikbare linknaam nodig, zoals “Beginpagina van Havencafé”. De lezer moet de bestemming kennen, niet alleen dat het logo blauwe golven bevat. title is geen vervanging: de knopinfo is niet betrouwbaar beschikbaar voor gebruikers van een toetsenbord, aanraakscherm of schermlezer.
Voeg een bijschrift toe met figure
<figure>
<img src="images/old-harbor.jpg" alt="Sailing ships crowded along a stone quay" width="1000" height="667">
<figcaption>The harbor around 1900. Photo: Port Town Archive.</figcaption>
</figure>
<figure> groepeert op zichzelf staande inhoud en het optionele zichtbare bijschrift. <figcaption> is het eerste of laatste kindelement van de figure, met maximaal één bijschrift per figure. Een figuur kan meerdere afbeeldingen, een codevoorbeeld, een citaat of een diagram bevatten; die is niet beperkt tot foto's.
In dit voorbeeld vervangt de alternatieve tekst wat de foto toont. Het bijschrift geeft de datum en bronvermelding. Als je het hele bijschrift naar de alternatieve tekst kopieert, herhaalt een schermlezer die tekst zonder de afbeelding uit te leggen. Een bijschrift dat alleen “Figuur 1” zegt, vervangt evenmin een beschrijving van de afbeelding.
Belangrijkste punten
- Schrijf alternatieve tekst op basis van het doel van de afbeelding in de context.
- Gebruik
alt=""voor versiering; laat het attribuut niet weg. - Een link met alleen een afbeelding heeft alternatieve tekst nodig die de bestemming noemt.
- Geef de belangrijkste boodschap van een grafiek en bied gedetailleerde informatie in de buurt.
- Een figuurbijschrift voegt zichtbare context toe; het vervangt geen alternatieve tekst.
5Structureer pagina's met semantische elementen
Een complete pagina combineert de basisstructuur van het document met betekenisvolle gebieden en zorgvuldig gekozen inhoudselementen. Bepaal welke website-informatie wordt herhaald, wat uniek is voor deze pagina en welke stukken op zichzelf kunnen staan. Koppel dat plan vervolgens aan een duidelijk koppenoverzicht en een duidelijke bronvolgorde. Met een kleine receptenpagina breng je metadata, tekst, navigatie, afbeeldingen en controles samen voordat je een visuele lay-out toevoegt.
5.1 Paginagebieden en herkenningspunten
Een pagina bevat gebieden met verschillende functies: een inleiding, navigatie, de unieke inhoud en ondersteunende informatie. Semantische elementen benoemen die functies, zodat de structuur ook buiten de visuele lay-out bruikbaar is.
Benoem elk gebied
| Element | Rol van de inhoud |
|---|---|
<header> | Inleiding op de pagina of de dichtstbijzijnde sectie of het dichtstbijzijnde artikel |
<nav> | Een belangrijke navigatiegroep |
<main> | De unieke hoofdinhoud van de pagina |
<aside> | Inhoud die indirect verband houdt met de omgeving |
<footer> | Informatie over de pagina of de sectie waarbij die hoort |
Een header voor de website bevat vaak een logo en menu. Een header van een artikel kan daarentegen de kop, auteur en datum bevatten. Een footer kan contactgegevens, verwante links of een auteursrechtvermelding bevatten. Deze elementen duiden rollen aan, geen vaste verzameling woorden.
Houd de hoofdinhoud afzonderlijk
Een normale pagina gebruikt één zichtbare <main>. De inhoud daarvan is uniek voor de pagina, dus herhaalde websitenavigatie hoort erbuiten. Plaats main niet binnen een article, section, aside, header, footer of nav. Een receptenartikel kan binnen main staan, niet andersom.
Een aside is bedoeld voor ondersteunend materiaal dat slechts indirect verband houdt met de rest. Een verzameling links naar verwante recepten kan een aside zijn; een essentiële stap in het recept niet. De naam “aside” plaatst de inhoud niet in een zijkolom. Zonder CSS staan deze gebieden normaal gesproken in bronvolgorde onder elkaar.
<body>
<header>
<p>Harbor Café</p>
<nav>...</nav>
</header>
<main>
<h1>Our Menu</h1>
<p>Everything is baked fresh each morning.</p>
</main>
<aside>
<h2>Today's special</h2>
<p>Tomato soup with fresh bread.</p>
</aside>
<footer>
<p>© 2026 Harbor Café</p>
</footer>
</body>
De unieke inhoud van de menupagina staat in main. De omringende website-informatie blijft erbuiten. De broncode leest van boven naar beneden logisch, voordat kolommen, kleuren of positionering zijn toegevoegd.
Begrijp herkenningspunten
Een herkenningspunt is een gebied dat hulptechnologie als navigatiebestemming beschikbaar kan maken. Main en nav bieden herkenningspunten. Een header op paginaniveau biedt het herkenningspunt voor de paginakop en een footer op paginaniveau het herkenningspunt voor pagina-informatie. Een header of footer die binnen een article, aside, main, nav of section is genest, biedt die herkenningspunten op paginaniveau niet.
Een aside heeft normaal gesproken een aanvullende rol. Een geneste aside kan die rol nog steeds hebben; nesten in een artikel neemt de betekenis op zichzelf niet weg. Gebruik die alleen voor passende ondersteunende inhoud en houd de gebieden van de pagina begrijpelijk.
<search> duidt een gebied aan met bedieningselementen en resultaten voor zoeken of filteren. Het maakt een zoekherkenningspunt en wordt ondersteund in de huidige grote browsers. Het verschilt van nav: inhoud zoeken en een bekende navigatielink kiezen zijn verschillende taken.
Een header mag geen header of footer bevatten en een footer mag geen van beide bevatten. Houd gebieden op paginaniveau gescheiden van de headers en footers die bij afzonderlijke artikelen horen. De juiste namen kiezen levert een bruikbare structuur op, ook wanneer alle gebieden er nu als gewone blokken uitzien.
Belangrijkste punten
- Semantische gebieden benoemen de rol van inhoud en kunnen herkenningspunten beschikbaar maken.
- Gebruik één zichtbaar hoofdinhoudsgebied voor inhoud die uniek is voor de pagina.
- Gebruik een aside voor ondersteunende inhoud die indirect verband houdt met de rest.
- Headers en footers op paginaniveau gedragen zich anders als herkenningspunt dan geneste headers en footers.
- HTML-namen van gebieden bepalen niet de positie van inhoud; CSS regelt de lay-out.
- Gebruik
<search>voor een zoek- of filtergebied.
5.2 Artikelen, secties en neutrale omhullende elementen
Een semantische keuze vertelt lezers wat een inhoudsblok is. Vraag je af hoe de inhoud zich tot de pagina verhoudt voordat je een omhullend element kiest; twee boxen die op elkaar lijken, kunnen verschillende elementen nodig hebben.
Controleer of de inhoud op zichzelf staat
Een artikel is een op zichzelf staand geheel dat afzonderlijk kan worden gedeeld of hergebruikt. Een blogbericht, recept, nieuwsartikel of reactie van een lezer kan aan die toets voldoen. Een artikel heeft meestal een eigen kop, maar een kop alleen maakt een blok nog geen artikel.
Een sectie groepeert één thema binnen een groter geheel, normaal gesproken met een kop. “Openingstijden” en “Route” kunnen secties van een contactpagina zijn. Als het blok geen duidelijk thema heeft en je het geen zinvolle kop kunt geven, is section waarschijnlijk de verkeerde keuze.
<article>
<h2>Growing Basil at Home</h2>
<section>
<h3>Planting</h3>
<p>Choose a sunny place for the pot.</p>
</section>
<section>
<h3>Care</h3>
<p>Check the soil regularly.</p>
</section>
</article>
Hier is het artikel één complete kweekhandleiding, terwijl de secties de handleiding in thema's verdelen. Dit voorbeeld past op een pagina waarvan de hoofd-<h1> vóór het artikel staat.
Nesten werkt ook andersom. Een sectie “Laatste nieuws” kan meerdere zelfstandige artikelen bevatten. Reacties kunnen artikelen zijn die zijn genest in het artikel waarop ze reageren. De inhoudelijke relatie bepaalt de nesting.
Houd kopniveaus in het paginaoverzicht
Een sectie begint de kopniveaus niet opnieuw. Als een pagina <h1> voor het onderwerp en <h2> voor een thematische groep gebruikt, gebruik je <h3> voor artikelen binnen die groep. Zet geen nieuwe <h1> in elke geneste sectie. Browsers en schermlezers gebruiken de kopniveaus die je daadwerkelijk schrijft; een omhullende section herstelt geen overgeslagen niveau.
Gebruik neutrale omhullende elementen als geen betekenis past
<div> is een neutraal omhullend blokelement. <span> is een neutraal omhullend element binnen een tekstregel. Ze bieden aangrijpingspunten voor een klasse, een taalattribuut of latere vormgeving zonder een bijzondere rol voor de inhoud aan te geven.
<p>Try <span lang="fr">pain au chocolat</span> today.</p>
De span duidt het Franse tekstgedeelte aan zonder een nieuw blok te beginnen. Als je de hele pagina met algemene div-elementen opbouwt, gaan nuttige rollen verloren. Maar als je elke div in een section verandert, verzin je thema's die er niet zijn.
Kies door te vragen wat het blok doet:
- Is het de unieke inhoud van de pagina? Gebruik main als buitenste gebied.
- Is het een belangrijke navigatiegroep? Gebruik nav.
- Kan het als een compleet geheel op zichzelf staan? Overweeg article.
- Is het een thematisch onderdeel met een kop? Overweeg section.
- Is het ondersteunende inhoud die indirect verband houdt met de rest? Overweeg aside.
- Is het alleen een omhullend element? Gebruik div, of span binnen tekst.
Ook <address> heeft een specifieke betekenis: contactgegevens voor het dichtstbijzijnde artikel of voor de pagina. Een e-maillink in de contactvoettekst van een website kan daarin thuishoren. Een postadres dat als historisch feit of als locatie van een evenement wordt genoemd, wordt niet automatisch contactinformatie omdat het een straatnaam bevat.
Belangrijkste punten
- Een artikel staat op zichzelf; een sectie groepeert één thema.
- Artikelen en secties kunnen elkaar bevatten als de inhoudelijke relaties daarbij passen.
- Houd kopniveaus consistent op de hele pagina.
- Gebruik neutrale omhullende div- en span-elementen als geen semantisch element past.
- Gebruik address voor contactgegevens van een pagina of artikel, niet voor elk straatadres.
5.3 Van een paginaplan naar volledige HTML
Plan de rollen en leesvolgorde voordat je een volledige pagina typt. Een eenvoudig wireframe benoemt de gebieden, terwijl een koppenoverzicht de inhoud daarbinnen benoemt. Samen helpen ze je de elementen en hun nesting te kiezen.
Breng de inhoud in kaart
Zet op een receptenpagina de herhaalde naam van de website en het menu in een header, het recept in main en de website-informatie in een footer. Het recept staat op zichzelf, dus een article past binnen main. Het koppenoverzicht is “Tomatensoep” met daaronder “Ingrediënten” en “Bereiding”.
De pagina hieronder staat in een map recipes/. De beginpagina en de afbeeldingenmap staan één map hoger:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Tomato Soup – Harbor Café Recipes</title>
</head>
<body>
<a href="#main-content">Skip to main content</a>
<header>
<p><a href="../index.html">Harbor Café</a></p>
<nav>
<ul>
<li><a href="../index.html">Home</a></li>
<li><a href="index.html">Recipes</a></li>
</ul>
</nav>
</header>
<main id="main-content">
<article>
<h1>Tomato Soup</h1>
<p>Published <time datetime="2026-03-14">March 14, 2026</time></p>
<figure>
<img src="../images/tomato-soup.jpg" alt="A bowl of red tomato soup with a swirl of cream" width="1200" height="800">
<figcaption>Ready in 30 minutes.</figcaption>
</figure>
<h2>Ingredients</h2>
<ul>
<li>1 kg ripe tomatoes</li>
<li>1 onion</li>
<li>500 ml vegetable stock</li>
</ul>
<h2>Method</h2>
<ol>
<li>Chop the onion and tomatoes.</li>
<li>Simmer them in the stock for 20 minutes.</li>
<li>Blend until smooth.</li>
</ol>
</article>
</main>
<footer>
<p>© 2026 Harbor Café</p>
</footer>
</body>
</html>
Volg de keuzes in de code
De skiplink staat als eerste in body en verwijst naar de unieke id van het hoofdinhoudsgebied. De header bevat de herhaalde identiteit en navigatie van de website. Het receptenartikel heeft de enige hoofdkop van de pagina, gevolgd door twee gelijkwaardige <h2>-secties.
De ingrediënten gebruiken een ongeordende lijst omdat een andere weergavevolgorde niet verandert wat nodig is. De bereiding gebruikt een geordende lijst omdat de stappen een reeks vormen. De alternatieve tekst van de foto vervangt de afbeelding; het bijschrift geeft context over de bereiding.
../index.html gaat omhoog naar de beginpagina. index.html blijft in de receptenmap. Geen van beide menulinks is gemarkeerd met aria-current="page", omdat de weergegeven pagina het soeprecept is en niet een van beide indexpagina's.
Controleer de voltooide pagina
Lees de broncode van boven naar beneden. De volgorde moet werken voor een toetsenbordgebruiker en een schermlezer voordat CSS iets verplaatst. Controleer de titel, het koppenoverzicht, de enkele zichtbare main, de linkpaden en de tekstalternatieven voor afbeeldingen. Voer het HTML-controleprogramma uit en los de meldingen op. Test daarna de links en afbeeldingen in de browser.
Houd op meerdere pagina's dezelfde herhaalde header, hetzelfde menu en dezelfde footer. Geef elke pagina een eigen titel en hoofdkop en pas relatieve paden aan vanuit de map van die pagina. Kleuren, lettertypen, tussenruimte en kolommen kun je daarna met CSS toevoegen zonder de rollen te veranderen die je al hebt vastgelegd.
Belangrijkste punten
- Plan de gebieden en een koppenoverzicht voordat je de volledige pagina schrijft.
- Bouw het document op in een logische leesvolgorde en houd herhaalde website-inhoud consistent.
- Controleer paden vanuit de werkelijke map van de pagina en laat de skiplink overeenkomen met main.
- Valideer de syntaxis, inspecteer de inhoud en test de voltooide pagina voordat je die vormgeeft.
HTML-elementen en attributen: voorbeelden
1Bouw en controleer een document
16 stappen
- 1IntroductieVan tekst naar een document
Een browser bouwt een pagina op uit de rollen die je in HTML markeert. Een alinea is niet zomaar een regel tekst: het element vertelt de browser hoe die inhoud in het document past.
Bouw een bezoekerspagina in stappen. Lees eerst de tags en attributen, voeg daarna head en de taalinstellingen toe en controleer ten slotte wat er gebeurt als een onderdeel verkeerd is genest.
- 2VoorbeeldLees één alinea
Begin met
<p>Visit the community garden.</p>. De begintag is<p>, de woorden zijn de inhoud en</p>sluit het element. Samen vormen ze één element.Schrijf nu
<p class="intro">Visit the community garden.</p>. Het class-attribuut voegt een naam toe binnen de begintag. Door de waarde tussen aanhalingstekens te zetten, houd je die bij elkaar als je later nog een klassenaam toevoegt. - 3VoorbeeldVoeg belang toe binnen de alinea
Markeer alleen de benodigde woordgroep:
<p>Bring your <strong>entry pass</strong>.</p>De alinea is het ouderelement en strong is het kindelement. Lees de eindtags van binnen naar buiten: eerst sluit strong en daarna p. Deze nesting wordt onderdeel van de DOM-boom van de browser; alleen de inspringing veranderen zou de relatie niet veranderen.
- 4UitdagingVerbeter twee klassenamen
Een auteur schrijft
<p class=welcome note>Hello.</p>met de bedoeling de alinea beide klassenamen te geven. Hoe moet het attribuut worden geschreven?---reveal---
Schrijf
class="welcome note". Zonder aanhalingstekens stopt de klassewaarde bij de eerste spatie en behandelt de browser note als een ander attribuut. Beide klassenamen horen in één waarde tussen aanhalingstekens, gescheiden door een spatie. - 5KernpuntAanwezigheid kan de waarde bepalen
Een booleaans attribuut staat aan doordat het aanwezig is.
<ol reversed>telt af en<ol reversed="false">doet dat ook. Verwijder reversed om het uit te schakelen.Voor lege elementen geldt een andere nuttige regel:
<br>,<img>en<meta>hebben geen inhoud of eindtag. Een afsluitende afbeeldingstag schrijven geeft een afbeelding geen tweede grens; het levert een fout op. - 6VoorbeeldMaak het buitenste document
Begin de bezoekerspagina met de declaratie en twee hoofdcontainers:
<!DOCTYPE html> <html lang="en"> <head> </head> <body> </body> </html>De doctype selecteert de standaardmodus. Head zal informatie over het document bevatten, terwijl body de inhoud bevat die mensen lezen. Beide zijn kindelementen van het html-hoofdelement.
- 7VoorbeeldVul head in
Voeg deze regels toe binnen head:
<meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Visit – Community Garden</title>De vroege charset-declaratie vertelt de browser hoe die tekst moet decoderen. De viewportregel ondersteunt een lay-out op de apparaatbreedte. De specifieke titel duidt deze pagina aan op het tabblad; het is niet de zichtbare kop die je in body gaat zetten.
- 8UitdagingPlaats de zichtbare kop
Op het tabblad moet “Visit – Community Garden” staan en de pagina moet zichtbaar beginnen met “Visit the Garden”. Waar komen die twee teksten te staan?
---reveal---
Gebruik
<title>Visit – Community Garden</title>in head en<h1>Visit the Garden</h1>in body. Ze hebben verschillende functies. Als je de h1 in head zet, kan de browser de fout herstellen, maar krijgt het document geen correcte bronstructuur. - 9UitlegGeef de taal van de tekst aan
De
lang="en"van het hoofdelement geeft de hoofdtaal van de pagina aan. Een Spaans welkom daarbinnen kan een eigen instelling krijgen:<p><span lang="es">Bienvenidos</span> to the garden.</p>Een schermlezer kan voor dat tekstgedeelte van uitspraak wisselen. Taalcodes beschrijven de inhoud, niet het land waar de lezer zich bevindt. Gebruik alleen een specifiekere code als dat onderscheid bij de tekst past.
- 10VoorbeeldLaat opgeslagen tekst overeenkomen met UTF-8
Een charset-declaratie is een leesinstructie, geen omzetter. Sla het bestand in de editor op als UTF-8 en houd
<meta charset="utf-8">vroeg in head.Bij tekst zoals “Café” kunnen niet-overeenkomende coderingen meerdere verkeerde tekens of een vervangingsteken opleveren. Controleer zowel de daadwerkelijk opgeslagen codering als de opgegeven codering. Een coderingsheader van een server heeft voorrang op de instelling in het meta-element.
- 11UitdagingToon opmaakcode als tekst
De bezoekerspagina moet “Use
for paragraphs.” tonen als uitleg. Hoe kan de broncode die zin bevatten zonder een ander p-element te maken?
---reveal---
Schrijf
<p>Use <p> for paragraphs.</p>. De referenties tonen punthaken als tekens. UTF-8 ondersteunt gewone accenten direct, maar voorkomt niet dat een letterlijk kleiner-danteken het begin van HTML-opmaakcode vormt. - 12VoorbeeldInspecteer een onverwachte lijst
Stel dat body deze broncode bevat:
<p>Facilities: <ul><li>Water tap</li></ul> </p>De browser sluit de alinea wanneer die bij ul komt, omdat een lijst geen inhoud van een alinea kan zijn. De inspector toont daarom een andere structuur dan de nesting in de broncode doet vermoeden. Dat iets er op het scherm goed uitziet, is geen syntaxiscontrole.
- 13VoorbeeldHerstel de relatie in de broncode
Scheid de inleidende alinea en de lijst:
<p>Facilities:</p> <ul> <li>Water tap</li> </ul>Nu volgt de lijst op de alinea in plaats van erin te staan. Voer na het opslaan het HTML-controleprogramma uit. Als het veel fouten meldt, verbeter dan de eerste en controleer opnieuw; één ontbrekend aanhalingsteken of één ontbrekende eindtag kan verschillende latere meldingen verklaren.
- 14UitdagingKies de nuttige vergelijking
Een alinea lijkt leeg in de inspector, terwijl de broncode een lijst lijkt te omvatten. Welke twee weergaven helpen je de oorzaak te vinden en welke relatie moet je controleren?
---reveal---
Vergelijk paginabron bekijken met de DOM-weergave van Elementen of Inspector. Controleer of de broncode ten onrechte een lijst binnen p plaatst. De browser kan de alinea vóór die lijst sluiten, waardoor de geparseerde boom verschilt van de geschreven nesting.
- 15UitdagingBekijk de opgeslagen bezoekerspagina
Een pagina heeft de juiste titel en taal, maar in een zin staat “Café” en het controleprogramma meldt een ontbrekend aanhalingsteken bij een link. Wat moet je voor elk probleem onderzoeken?
---reveal---
Vergelijk voor de verminkte tekst de opgeslagen codering van het bestand met de UTF-8-declaratie en een eventuele serverheader. Herstel voor de opmaakfouten het ontbrekende aanhalingsteken van het attribuut en valideer opnieuw. Taalinstellingen zetten geen bytes om en een pagina die er goed uitziet, herstelt je broncode niet.
- 16SamenvattingHoud de drie controles uit elkaar
Lees de elementen en attributen om de structuur te controleren. Zorg dat de opgeslagen tekencodering overeenkomt met de declaratie en gebruik taalattributen voor de taal. Vergelijk de broncode, de DOM en de meldingen van het controleprogramma wanneer het resultaat onverwacht is.
Sla wijzigingen op voordat je de browser vernieuwt. Syntaxisvalidatie is één controle; daarnaast moet je de koppen, linkteksten en afbeeldingsbeschrijvingen van de pagina op betekenis beoordelen.
2Maak van een kort artikel gestructureerde tekst
14 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieGeef lezers een overzicht
- 2VoorbeeldBegin met het koppenoverzicht
- 3VoorbeeldVoeg de alinea's toe
- 4UitdagingKeer terug naar een hoofdsectie
- 5UitlegMarkeer een waarschuwing om de betekenis
- 6VoorbeeldCiteer een kort advies
- 7VoorbeeldLeg code uit zonder die uit te voeren
- 8UitdagingOnderscheid zichtbare en machineleesbare datums
- 9UitlegKies een verzameling of reeks
- 10VoorbeeldHoud samenhangende items bij elkaar
- 11UitdagingZet een genummerde procedure voort
- 12VerbandKoppel labels aan informatie
- 13UitdagingBeoordeel de keuzes in het artikel
- 14SamenvattingLees de structuur hardop
3Verbind een kleine website zonder kapotte routes
13 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieVerbind pagina's en paginasecties
- 2VoorbeeldBepaal de beginmap
- 3VoorbeeldGa omhoog en kies de bestemming
- 4UitdagingVolg een dieper pad
- 5UitlegMaak de bestemming duidelijk
- 6VoorbeeldKondig een nieuw tabblad aan
- 7UitdagingKies navigatie of een actie
- 8VoorbeeldMaak het websitemenu
- 9VoorbeeldVoeg een inhoudsopgave voor de pagina toe
- 10VoorbeeldMaak een route langs het menu
- 11UitdagingZoek de onjuiste markering van de huidige pagina
- 12UitdagingBekijk een gekopieerd navigatieblok
- 13SamenvattingControleer elke route vanaf de beginpagina ervan
4Kies een afbeelding en geef die een bruikbaar alternatief
10 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieBereid het bestand en de betekenis voor
- 2VoorbeeldZoek de foto van de ingang
- 3VoorbeeldReserveer dezelfde vorm
- 4TipVerminder het aantal bytes voordat je opmaakcode toevoegt
- 5UitdagingKies hoe afbeeldingen op twee plaatsen laden
- 6UitlegSchrijf voor het doel van de afbeelding
- 7VoorbeeldOnderscheid een bijschrift van het alternatief
- 8UitdagingGeef een logolink een naam
- 9UitdagingBeoordeel een figuur verderop op de pagina
- 10SamenvattingBeoordeel de afbeelding zonder die te zien
5Bouw een pagina op basis van een inhoudsplan
12 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductiePlan een evenementenpagina
- 2VoorbeeldKies de buitenste gebieden
- 3UitlegOnderscheid headers van pagina's en artikelen
- 4UitdagingHoud main op de juiste plaats
- 5VoorbeeldBepaal of het evenement op zichzelf staat
- 6VoorbeeldSchrijf de relaties tussen koppen
- 7UitdagingKies opmaakcode voor contactgegevens op basis van het doel
- 8VoorbeeldStel de pagina van buiten naar binnen samen
- 9VoorbeeldVerbind de inhoud binnen main
- 10TipHoud pagina-exemplaren consistent
- 11UitdagingBeoordeel de volledige structuur
- 12SamenvattingLees voordat je vormgeeft
HTML-elementen en attributen: oefenvragen
Set 1: Lees en bouw een kleine webpagina10 Oefenvragen
Vraag 1 van 10
Toon antwoordVerberg antwoord
Vraag 2 van 10
<title>Trail Map – Pine Park</title> in een normaal document?Toon antwoordVerberg antwoord
Vraag 3 van 10
Toon antwoordVerberg antwoord
lang="es" duidt de alinea aan als Spaans, zodat taalgevoelige hulpmiddelen er correct mee kunnen omgaan. Het hoofdelement kan Engels als standaardtaal van de pagina behouden. dir stelt de tekstrichting in en kan dus geen taalcode vervangen.Vraag 4 van 10
<h1> met de naam “Een fiets repareren” en een <h2> met de naam “De remmen controleren”. Welk niveau past bij een nieuwe subsectie “De kabel afstellen” binnen die remmensectie?Toon antwoordVerberg antwoord
h2 zou op hetzelfde niveau staan als de remmensectie. Als je h4 kiest voor een kleinere standaardweergave, sla je een niveau in het overzicht over.Vraag 5 van 10
Toon antwoordVerberg antwoord
li-element. Een ongeordende lijst kan dezelfde woorden groeperen, maar drukt hun vereiste volgorde niet uit. Getypte nummers binnen een alinea missen ook de echte lijststructuur.Vraag 6 van 10
guides/cycling.html heeft een link nodig naar contact.html in de bovenste map van de website. Welke relatieve href bereikt dat bestand?Toon antwoordVerberg antwoord
guides, dus ../ gaat eerst naar de bovenliggende map, de bovenste map van de website. Daarna selecteert contact.html het doelbestand. Met alleen contact.html zou je binnen guides zoeken, niet naast die map.Vraag 7 van 10
Toon antwoordVerberg antwoord
Vraag 8 van 10
Toon antwoordVerberg antwoord
Vraag 9 van 10
<img> hebben?Toon antwoordVerberg antwoord
Vraag 10 van 10
Toon antwoordVerberg antwoord
Set 2: Kies opmaakcode die bij de inhoud past10 Oefenvragen
Sla deze les op om elk antwoord te zien en elke set te oefenen.
Vraag 1 van 10
<ol reversed="false">?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
<p>Keep <em>this</p></em> verkeerd genest?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
<em>go</em> in een codeblok tonen met behoud van de witruimte. Welke opmaakcode bereikt dat?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
events.html linkt het websitemenu naar Home, Events en Contact. Welke link moet aria-current="page" hebben?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
https://example.com/help/topics/edit.html linkt naar ../index.html#files. Waar leidt de link naartoe?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
<aside> in een kolom rechts verschijnt, maar die verschijnt onder de hoofdtekst. Wat verklaart dit?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Set 3: Zoek problemen in een werkende pagina10 Oefenvragen
Sla deze les op om elk antwoord te zien en elke set te oefenen.
Vraag 1 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
<a href="notes.html>Notes</a>. Wat moet je eerst herstellen?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
<ol start="6"><li>A</li><li value="11">B</li><li>C</li></ol>?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
href="#reading", terwijl main id="article" heeft. Door welke wijziging bereikt de skiplink het hoofdinhoudsgebied?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Set 4: Volg structuur, paden en paginagedrag10 Oefenvragen
Sla deze les op om elk antwoord te zien en elke set te oefenen.
Vraag 1 van 10
<p id="notice" class=intro important>Bring ID.</p> en later <aside id="notice">...</aside>. Welke twee wijzigingen geven de alinea beide bedoelde klassen en houden de identificaties geldig?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
<cite> aan in HTML-tekst?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
<ol reversed start="9">; het tweede item heeft value="5". Welke itemnummers worden weergegeven?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
https://example.com/library/topics/birds.html. Die moet linken naar het element id="access" in https://example.com/visit.html. Welke relatieve href doet dat?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
journal/entry.html. De link Home is href="index.html"; de link Journal is href="journal/index.html". Welk paar relatieve href's bereikt vanaf het bericht de beginpagina op het hoogste niveau en de journal-index?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Set 5: Beoordeel een website voordat je CSS toevoegt10 Oefenvragen
Sla deze les op om elk antwoord te zien en elke set te oefenen.
Vraag 1 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
Use <aside> here als alinea-inhoud?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
https://example.com/notes/entry.html heeft een externe link nodig naar https://example.org/help. De auteur schrijft href="example.org/help". Waar komt de geschreven link uit en wat herstelt dit?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
<address> bij die vermelding?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
recipes/stew.html linkt Home met index.html, markeert de receptenindex als aria-current="page" en zet een noodzakelijke bereidingsstap in aside. Welk controleplan herstelt alle drie de inhoudelijke relaties?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Kom je niet uit je eigen opgave? Huiswerkhulp
Kernbegrippen
A
Absolute URL
https://example.com/help noemt zowel de website als het doelpad.Afbeeldingsbron
Afbeeldingslicentie
Afkorting
Afwijkend tekstgebruik
Alinea
Alternatieve tekst
Artikel
Attribuut
href-attribuut op een link geeft het adres dat de browser moet openen.B
Basistekstrichting
dir="rtl" om naast lang="ar" de basistekstrichting in te stellen.Beeldverhouding
Belangrijke tekst
Beschrijving in een beschrijvingslijst
Beschrijvingslijst
Blokcitaat
Body-element
Booleaans attribuut
reversed keert de nummering nog steeds om wanneer het is geschreven als reversed="false".Bronvolgorde
Browsercontext
_blank vraagt om een nieuwe browsercontext in plaats van de huidige.C
Citaat binnen een zin
Code-element
Compressie met verlies
Compressie zonder verlies
Contactgegevens
Contextuele markering
D
Decoratieve afbeelding
alt="", zodat die geen overbodige gesproken tekst toevoegt.Div-element
Doctype
<!DOCTYPE html>, vóór het hoofdelement en de metadata.Documenttitel
DOM
Download-attribuut
E
Element
<p>Welcome.</p> duidt “Welcome.” aan als een alinea met pagina-inhoud.F
Figuur
Figuurbijschrift
Foutherstel
Fragment
#care verwijst naar id="care", met het hekje alleen in het adres.Functionele afbeelding
G
Geneste lijst
Geordende lijst
Globaal attribuut
id kan een kop of het hoofdinhoudsgebied aanduiden als doel van een fragment.H
Head-element
Header
Herkenningspunt
Hoofdelement
<html lang="en"> geeft ook de standaardtaal van de pagina aan.Hoofdinhoudsgebied
HTML
HTML-validatie
Hyperlink
I
Inhoudsopgave
K
Kleine lettertjes
Knop
Koppengroep
Koppenhiërarchie
Koppenoverzicht
Kruimelpad
L
Lay-outverschuiving
Leeg element
<img> zonder bijbehorende eindtag.Lijstitem
Linktekst
M
Machineleesbare datum
2026-03-14 kan samengaan met de zichtbare tekst “14 maart 2026”.Markering van de huidige pagina
Metadata
N
Nadruk
Navigatiegebied
Navigatielabel
Nesten
<strong> voordat je de alinea sluit die het element bevat.Noopener
rel="noopener" expliciet te schrijven, bescherm je de pagina die de link opent, ook al geldt die bescherming impliciet bij moderne _blank-links.Noreferrer
O
Ongeordende lijst
P
Paginabron bekijken
R
Regeleinde
Relatieve URL
news/ gaat de relatieve URL ../contact.html omhoog naar de contactpagina.S
Sectie
Semantisch element
Skiplink
Span-element
lang="fr" kan een korte Franse uitdrukking binnen een Engelse alinea aanduiden.Standaardmodus
Statische website
Subscript
Superscript
T
Taalcode
fr-CA duidt Frans aan zoals gebruikt in Canada, niet de locatie van de lezer.Tag
<p> het element en sluit de tag </p> het af.Tekencodering
Tekenreferentie
< kan een pagina een openende punthaak tonen zonder een tag te beginnen.Term in een beschrijvingslijst
Thematische scheiding
Titel van een aangehaald werk
U
Uitgesteld laden
URL vanaf de hoofdmap
/about.html bereikt vanuit verschillende mappen hetzelfde pad op de website.URL-schema
mailto: vraagt een e-mailapp een bericht op te stellen aan het adres dat volgt.UTF-8
V
Vaste spatie
10 km houdt een vaste spatie het getal naast de meeteenheid.Vectorafbeelding
Viewport
Voettekst
Vooraf opgemaakte tekst
< nodig om een letterlijk kleiner-danteken te tonen.W
Wireframe
Z
Zijdelingse inhoud
Zoekgebied
Over deze les
Door StudeliFout melden
Maak je eigen Studiemateriaal
Maak van je aantekeningen, slides en documenten Leermodules, Oefenvragen, Flashcards en 6 andere tools.