Media & formulieren (basis)
Wanneer je site “leuk” oogt, maar toch onhandig voelt
Je krijgt in de training een opdracht: maak een pagina “Contact” met een logo bovenaan, een afbeelding van het lokaal, en een klein formulier waarmee een student een vraag kan sturen. Veel beginners zetten er snel een plaatje in en bouwen het formulier met wat losse tekst en een paar inputjes. Het werkt “een beetje”, maar bij feedback komen dezelfde problemen terug: het plaatje heeft geen betekenis voor screenreaders, het formulier is lastig te gebruiken met toetsenbord, en niemand snapt welke velden verplicht zijn.
Dat is precies waarom media en formulieren nu belangrijk worden. Waar je eerder structuur aanbracht met semantische pagina-onderdelen en leesbare content (paragrafen, lijsten, links), gaat het nu om twee andere soorten HTML: content die je niet leest maar wél moet begrijpen (afbeeldingen) en content waar je mee interacteert (formulieren). Ook hier geldt dezelfde kern: je kiest HTML op betekenis en functie, niet op uiterlijk.
Media en formulieren: betekenis eerst, uiterlijk later
Media in deze basisles betekent vooral: afbeeldingen plaatsen op een manier die klopt voor gebruikers, browsers en hulpmiddelen. Het belangrijkste element is <img>, met twee kernattributen: src (waar staat het bestand) en alt (wat betekent het beeld). Je beschrijft dus niet “er staat een plaatje”, maar welk stukje informatie de gebruiker mist als het beeld niet te zien is.
Formulieren zijn HTML-structuren waarmee je input verzamelt. De basis bestaat uit <form>, besturingselementen zoals <input>, <textarea>, <select>, en vooral <label> om velden een duidelijke naam te geven. Zonder labels kunnen mensen nog “gokken” op basis van placeholder-tekst, maar screenreaders en toetsenbordgebruikers verliezen dan de context. Formulieren zijn dus een heel directe vorm van semantiek: jij moet expliciet maken welke vraag bij welk veld hoort.
Twee principes uit het eerdere werk blijven leidend:
-
Structuur boven styling: een “mooi formulier” maak je later met CSS; eerst moet het formulier begrijpelijk en navigeerbaar zijn.
-
Relaties expliciet maken: zoals een lijst items bij elkaar hoort, hoort ook een label bij een input en hoort een afbeeldingstekst bij de betekenis van het beeld.
Afbeeldingen die écht iets toevoegen: <img>, alt, en wanneer je welke tekst schrijft
Een <img> is geen “decoratie in je layout”, maar een stuk content dat óf informatie draagt, óf sfeer ondersteunt. Daarom is alt zo bepalend: die tekst wordt gebruikt als het plaatje niet laadt, en is de basis voor hoe screenreaders het beeld aankondigen. Denk bij alt niet aan “beschrijf letterlijk wat je ziet”, maar aan: wat is de functie van dit beeld in déze pagina? Eenzelfde foto kan op de ene pagina informatief zijn (“Zo ziet het lokaal eruit”) en op een andere pagina puur sfeer (“Sfeerbeeld in header”). De alt-tekst verandert mee met die bedoeling.
Goede alt-tekst is meestal kort en specifiek. Als de afbeelding een concept uitlegt, benoem je dat concept: “Screenshot van het menu met de link ‘Contact’ gemarkeerd.” Als het gaat om een portret bij een docent-bio: “Portret van docent Samira.” Bij decoratieve beelden wil je juist geen ruis: dan is de alt-tekst leeg (alt="") zodat hulpmiddelen het beeld kunnen overslaan. Beginners maken vaak de fout om altijd iets in alt te zetten (“afbeelding”, “logo”), waardoor een screenreader-gebruiker onnodige herhaling hoort en de pagina zwaarder wordt.
Best practices die meteen veel problemen voorkomen:
-
Gebruik altijd
srcenaltop<img>. Zonderaltis de betekenis onduidelijk en krijg je vaak bestandsnamen als “IMG_4839.jpg”. -
Houd
altfunctioneel: beschrijf de rol van het beeld, niet je fotografie. -
Vermijd dubbele informatie: als er direct naast een afbeelding al tekst staat die exact hetzelfde zegt, maak de
altkort of leeg—anders lees je het dubbel voor.
Veelvoorkomende misvattingen en valkuilen:
-
Misvatting: “
altis voor SEO.” Het helpt zoekmachines, maar het is primair voor toegankelijkheid en robuuste content. -
Valkuil: “Ik zet de hele alinea in
alt.” Langealt-teksten maken navigatie traag; gebruik liever normale tekst in<p>als het echt uitleg is. -
Valkuil: een afbeelding inzetten als “tekst” (bijv. een banner met tekst erin). Dan kan niemand het kopiëren, vertalen of goed laten voorlezen; zet tekst als echte HTML.
Voor basis is één element vaak genoeg. Wil je een bijschrift, dan kun je later uitbreiden met een figuur-structuur, maar de kern blijft: <img> + betekenisvolle alt.
Formulieren als gesprek: <form>, labels, velden en voorspelbaar gedrag
Een formulier is eigenlijk een mini-gesprek: jij stelt vragen, de gebruiker antwoordt, en daarna wordt het verstuurd. HTML moet dat gesprek expliciet maken. De container is <form>. In echte projecten hoort daar óók bij waarheen het verstuurt (action) en hoe (method), maar in trainingsopdrachten ligt de focus vaak op de structurele kwaliteit: kloppen de velden, zijn ze benoemd, en zijn ze bruikbaar?
Het belangrijkste basispatroon is: elk invoerveld heeft een label. Het label is de zichtbare vraag (“Naam”, “E-mail”, “Bericht”) en moet gekoppeld zijn aan het veld. Dat doe je door het label te verbinden met het veld via een unieke id op het veld en for op het label. Dat is veel sterker dan placeholder-tekst, omdat de naam van het veld zo altijd beschikbaar blijft—ook als iemand al getypt heeft of als een screenreader het veld binnenkomt. Zonder die koppeling krijg je formulieren die “visueel oké” lijken, maar functioneel wankel zijn.
Naast labels kies je het juiste veldtype. Beginners gebruiken vaak overal dezelfde <input type="text">, maar het type is betekenis: een e-mailveld is geen vrije tekst, een telefoonnummer vraagt andere input, en een lang bericht hoort meestal in <textarea>. Het effect is praktisch: browsers kunnen betere toetsenborden tonen op mobiel, eenvoudige validatie aanbieden, en gebruikers sneller door velden laten gaan. Het is dezelfde gedachte als bij <ol> voor stappen: de semantiek helpt gedrag en hulpmiddelen.
Hier is een compacte vergelijking van veelgebruikte basisvelden:
| Keuzevraag | <input type="text"> |
<input type="email"> |
<textarea> |
|---|---|---|---|
| Waarvoor bedoeld? | Korte vrije invoer zoals naam of onderwerp. | E-mailadres met herkenbaar formaat. | Langere tekst zoals een vraag of toelichting. |
| Wat levert het op voor gebruikers? | Snel invullen, vaak één regel. | Mobiel toont vaak een e-mailgericht toetsenbord en basiscontrole. | Ruimte om een complete boodschap te typen en terug te lezen. |
| Typische trainingsfout | Alles als text behandelen, waardoor betekenis verdwijnt. | Denken dat dit “alles valideert” en geen uitleg meer nodig is. | textarea vergeten en een lang bericht in één regel proppen. |
| Best practice | Combineer met een duidelijk label en eventueel required waar logisch. |
Leg nog steeds uit wat je verwacht (bijv. “naam@domein.nl”). | Geef duidelijke labeltekst (“Je vraag”) en houd het formulier compact. |
Veelvoorkomende misvattingen en valkuilen bij formulieren:
-
Misvatting: “Placeholder vervangt een label.” Placeholder verdwijnt zodra je typt en is geen vaste naam; labels blijven essentieel.
-
Valkuil: velden zonder duidelijke linktekst of instructie (“Meer info”) rond het formulier. Ook hier geldt: tekst moet zelfstandig duidelijk zijn.
-
Valkuil: een “Verstuur”-knop die eigenlijk een link is. Navigatie is
<a>, een formulieractie is een<button type="submit">.
Als je formulieren semantisch opbouwt, voelt het niet alleen professioneler, maar het wordt ook makkelijker te controleren en te verbeteren—precies wat je in trainingsopdrachten vaak terugziet in beoordelingscriteria.
Hoe media en formulieren samenwerken met je content-structuur
Media en formulieren staan niet los van de tekststructuur die je al gebruikt. Een afbeelding staat meestal niet “op zichzelf”: je introduceert hem met een paragraaf, of je verwijst ernaar met een link. Een formulier werkt pas prettig als de omringende tekst duidelijk maakt wat het doel is (“Stel je vraag” vs. “Vul dit in”). Zie je pagina als een route: paragrafen en headings geven context, beelden geven herkenning, en het formulier is het actiepunt.
Op dezelfde manier als je eerder leerde dat je geen <br> stapelt om structuur te faken, geldt hier: je gebruikt geen visuele trucjes om betekenis te vervangen. Een icoontje zonder goede alt is alsof je een link “klik hier” noemt: het kan er strak uitzien, maar je laat betekenis weg. En een formulier zonder labels is alsof je stappen als losse zinnen schrijft in plaats van een <ol>: de relatie tussen vraag en antwoord is impliciet, terwijl HTML juist bedoeld is om relaties expliciet te maken.
Een praktische vuistregel: als iemand je pagina “lineair” doorloopt (met tab-toets of screenreader), moet het net zo logisch blijven als wanneer je het met je ogen scant. Afbeeldingen moeten dan een begrijpelijke tekstalternatief hebben, en formuliervelden moeten duidelijk benoemd zijn. Dat is niet extra werk “voor uitzonderingen”; het is het fundament van betrouwbare webpagina’s.
[[flowchart-placeholder]]
Twee trainingssituaties uitgewerkt: wat je bouwt, waarom het werkt, wat de grenzen zijn
Voorbeeld 1: Een “Contact”-pagina met lokaal-foto en een eenvoudig vragenformulier
Stel, je opdracht zegt: “Maak een Contact-pagina met een foto van het lokaal en een formulier met naam, e-mail en vraag.” Een sterke aanpak begint met de betekenis van de onderdelen. Je zet eerst een korte paragraaf die uitlegt wanneer je dit formulier gebruikt (“Voor vragen over opdrachten of inlevermomenten”). Daarna plaats je de afbeelding met een alt die de functie ondersteunt, bijvoorbeeld: “Foto van het leslokaal met werkplekken” als die herkenning biedt voor bezoekers. Als de foto puur decoratief is (alleen sfeer), kies je alt="" zodat het geen ruis wordt in de navigatie.
Vervolgens bouw je het formulier als een reeks duidelijk benoemde velden. Je gebruikt labels die als vragen gelezen kunnen worden: “Naam”, “E-mailadres”, “Je vraag”. Je kiest type="email" voor het e-mailveld en textarea voor de vraag, omdat dat past bij de lengte en het doel. De verstuuractie hoort bij een knop in het formulier, niet bij een link; daarmee blijft de betekenis helder: dit is een actie, geen navigatie.
Impact en voordelen:
-
Impact: gebruikers snappen sneller wat het doel is, kunnen het formulier efficiënt invullen, en hulpmiddelen blijven in context door labels en goede
alt. -
Voordeel voor onderhoud: als je later CSS toevoegt, hoef je de HTML niet te “repareren”; de semantiek blijft stabiel.
-
Limiet: dit is nog geen volledige backend-verwerking. Het formulier kan structureel perfect zijn, maar zonder serverlogica verstuurt het in een echte site nog niets; in training ligt de beoordeling vaak op de HTML-kwaliteit en bruikbaarheid.
Voorbeeld 2: Een “Oefeningen”-pagina met een logo-afbeelding en een mini-feedbackblok
Een andere trainingssituatie: je hebt een pagina “Oefeningen” met een header waar een logo staat, en onderaan een klein feedbackformulier: “Was deze uitleg duidelijk?” Veel beginners geven het logo alt="logo" en maken het feedbackdeel met alleen twee inputjes zonder label. Dat lijkt klein, maar de gebruikservaring gaat meteen onderuit: “logo” zegt niets, en een screenreader leest twee velden zonder naam, wat voelt alsof je in het donker iets moet invullen.
Een betere stap-voor-stap aanpak: je behandelt het logo als een betekenisdrager. Als het logo ook de naam van de trainingssite vertegenwoordigt, maak je de alt bijvoorbeeld “ICT Developer Training” (of de daadwerkelijke sitenaam), zodat het informatief is. Staat de sitenaam al als tekst direct naast het logo, dan kan je alt="" overwegen om dubbele aankondiging te voorkomen. Daarna ontwerp je het feedbackformulier als echte micro-interactie: een duidelijke vraag als tekst (bij voorkeur in een paragraaf of heading) en inputs met labels, bijvoorbeeld een keuzeveld of een korte tekstinput. Ook al is het “maar een mini-formulier”, de regel blijft: label + passend veldtype + duidelijke submitknop.
Impact en workflow-waarde:
-
Impact: je pagina blijft scanbaar (tekststructuur), begrijpelijk (alt), en bedienbaar (labels). Dat sluit direct aan op hoe trainingsopdrachten vaak worden nagekeken: klopt de semantiek en is het consistent?
-
Voordeel: je kunt dit patroon herhalen op meerdere pagina’s zonder dat elke pagina een ander “formulieren-dialect” spreekt.
-
Limiet: als je te veel velden toevoegt zonder heldere context of groepeert, wordt het alsnog zwaar. Houd formulieren kort en doelgericht, net zoals je paragrafen kort houdt en lijsten niet overlaadt.
Een stevige basis voor betrouwbare pagina’s
-
Afbeeldingen: gebruik
<img src="…">met een doelgerichtealtdie past bij de functie van het beeld; vermijd ruis en dubbele informatie. -
Formulieren: bouw met
<form>en geef elk veld een gekoppeld<label>; kies veldtypes op betekenis (email is geen vrije tekst, lange input hoort intextarea). -
Zelfde mindset als bij tekst en links: HTML legt relaties en betekenis vast, CSS maakt het mooi—niet andersom.
Je fundament voor webpagina’s
-
Een correcte HTML-basisstructuur (head/body en metadata) die browsers voorspelbaar laat renderen.
-
Semantische pagina-opbouw met
<header>,<nav>,<main>en<footer>zodat je site navigeerbaar en onderhoudbaar wordt. -
Leesbare content-HTML met paragrafen, lijsten en links die betekenisvol zijn (niet “visueel bij elkaar geknutseld”).
-
Media en formulieren die niet alleen “werken”, maar ook begrijpelijk zijn door goede
alt-teksten en labels.
Als je dit toepast in trainingsopdrachten, lever je pagina’s op die rustig lezen, logisch aanvoelen en veel makkelijker na te kijken zijn—precies het soort basis dat je later zonder frustratie kunt uitbreiden.