Webformulieren, tabellen en media in HTML

Maak webformulieren die de juiste informatie verzamelen: kies invoertypen, tekstgebieden en uitklaplijsten, geef elk bedieningselement een label en weet wat de browser verstuurt. Gebruik de ingebouwde validatie van de browser om ontbrekende of verkeerd opgemaakte antwoorden op te sporen. Presenteer gegevens in duidelijke, toegankelijke tabellen, voeg audio en video toe met ondertiteling en terugvalinhoud, en sluit kaarten, video's en andere pagina's veilig in met iframes.

BeginnerLes 3 van 8 in Cursus HTML en CSS: responsieve, toegankelijke websites bouwen

Wat je leert

  1. Maak een formulier, kies voor elk gegeven een passend bedieningselement, geef elk bedieningselement een label en weet precies wat de browser verstuurt wanneer het formulier wordt verzonden.
    • Maak een formulier en begrijp welke gegevens het verstuurt
      Gebruik het form-element, namen en waarden, verzendknoppen en de attributen action en method om te bepalen welke gegevens de pagina verlaten en waar ze naartoe gaan.
    • Kies invoertypen die bij de gegevens passen
      Kies het invoertype dat bij elk gegeven past, zodat browsers het juiste toetsenbord of de juiste kiezer aanbieden en het basisformaat controleren.
    • Gebruik tekstgebieden, uitklaplijsten en andere bedieningselementen
      Verzamel langere tekst, bied vaste keuzelijsten en invoersuggesties aan en toon voortgang of metingen met textarea, select, datalist, progress en meter.
    • Geef elk bedieningselement een label en groepeer samenhangende elementen
      Koppel zichtbare labels aan hun bedieningselementen, groepeer samenhangende bedieningselementen met fieldset en legend en voeg instructies en aanwijzingen voor automatisch aanvullen toe, zodat iedereen het formulier kan invullen.
  2. Gebruik HTML-validatieattributen zodat de browser ontbrekende, te lange, buiten het bereik vallende en verkeerd opgemaakte waarden opmerkt voordat het formulier wordt verzonden, en weet waar deze controle ophoudt.
    • Maak velden verplicht en beperk de tekstlengte
      Gebruik required, minlength en maxlength en voorspel wanneer de browser een verzending accepteert of blokkeert.
    • Stel bereiken en stapgroottes in voor getallen, datums en tijden
      Gebruik min, max en step om alleen zinvolle waarden te accepteren en voorspel welke waarden worden goedgekeurd.
    • Controleer of invoer aan patronen voldoet en geef bruikbare feedback
      Schrijf eenvoudige patroonregels, leg ze uit aan gebruikers, geef geldige en ongeldige velden vorm en begrijp waarom de server de gegevens opnieuw moet controleren.
  3. Maak tabelgegevens op met rijen, cellen, kopcellen en een tabelbijschrift en houd grotere tabellen begrijpelijk met toepassingsbereiken van kopcellen, rij- en kolomgroepen en samengevoegde cellen.
    • Maak een gegevenstabel met kopcellen en een tabelbijschrift
      Gebruik table, tr, th, td en caption om gegevens in rijen en kolommen te presenteren en geef de tabel een duidelijke structuur met toepassingsbereiken van kopcellen en rijgroepen.
    • Voeg cellen samen en koppel complexe kopcellen aan de juiste gegevenscellen
      Gebruik colspan en rowspan correct, groepeer kolommen en koppel cellen aan hun kopcellen wanneer een tabel meer dan één niveau kopcellen heeft.
  4. Voeg geluid en video in met de eigen spelers van de browser, bied formaten en terugvalmogelijkheden die in verschillende browsers werken en maak media voor iedereen bruikbaar met ondertiteling voor doven en slechthorenden, dialoogondertiteling en transcripten.
    • Voeg audio en video in met de juiste attributen
      Gebruik de elementen audio en video met afspeelbediening, afmetingen, een posterafbeelding en laadaanwijzingen, en bepaal wanneer automatisch afspelen en herhalen passend zijn.
    • Bied bestandsformaten en terugvalmogelijkheden die overal werken
      Kies breed ondersteunde bestandsformaten, vermeld alternatieve bronnen op volgorde en voeg terugvalinhoud toe.
    • Voeg ondertiteling voor doven en slechthorenden, dialoogondertiteling en transcripten toe
      Schrijf een eenvoudig WebVTT-bestand, koppel het met het track-element en bied transcripten aan zodat media ook zonder geluid bruikbaar zijn.
  5. Plaats kaarten, video's en andere webpagina's met iframes binnen je eigen pagina en kies instellingen die elke inbedding toegankelijk, snel, privacyvriendelijk en veilig houden.
    • Sluit een pagina in met een iframe
      Voeg een iframe toe met een titel, afmetingen en uitgesteld laden, pas inbedcode van een andere website aan en herken websites die inbedding niet toestaan.
    • Zorg voor veilige inbeddingen die de privacy beschermen en kies het juiste element
      Beperk met sandbox en allow wat een ingesloten pagina mag doen, bedenk wat inbeddingen over bezoekers delen en kies tussen iframe, embed, object en de media-elementen.

Webformulieren, tabellen en media: uitleg

5 hoofdstukken

1

Maak formulieren die mensen kunnen gebruiken

Een bruikbaar formulier begint bij de informatie die mensen moeten invullen. Kies bedieningselementen die bij die informatie passen, geef elk element een duidelijk label en koppel de elementen aan een formulier dat betekenisvolle namen en waarden verstuurt. Een zoekveld, een berichtenformulier en een bestandsupload verzamelen allemaal invoer, maar hebben verschillende instellingen nodig. Door de HTML te volgen vanaf de invoer van de gebruiker tot en met het uitgaande verzoek, kun je die keuzes gemakkelijker controleren.

1.1 Hoe een formulier namen en waarden verstuurt

Een formulier verzamelt samenhangende antwoorden en verstuurt die naar een URL. Het <form>-element omvat de bedieningselementen en de verzendknop. Houd afzonderlijke formulieren gescheiden: HTML staat geen formulier binnen een ander formulier toe.

Kies de bestemming en methode

action geeft de ontvangende URL op. Zonder dit attribuut gaat het verzoek naar de huidige pagina. method bepaalt hoe de browser de gegevens verstuurt; standaard is dat GET.

MethodeWaar de gegevens naartoe gaanGebruikelijk gebruik
GETIn de URL na een vraagtekenZoekopdrachten en filters
POSTIn de berichtinhoud van het verzoekBerichten, aanmeldingen en wijzigingen in opgeslagen gegevens

GET-gegevens kunnen verschijnen in de geschiedenis, bladwijzers en serverlogboeken. POST houdt ze buiten de querystring, maar versleutelt ze niet. Gebruik HTTPS om gegevens tijdens het verzenden te beschermen. Het serverprogramma ontvangt en verwerkt het verzoek; het HTML-formulier slaat antwoorden niet zelf op en e-mailt ze niet zelf.

Volg een zoekverzoek
<form action="/search" method="get">
  <label for="query">Search</label>
  <input id="query" type="search" name="q">
  <label for="language">Language</label>
  <select id="language" name="lang">
    <option value="en">English</option>
  </select>
  <button type="submit">Search</button>
</form>

Als de gebruiker “html tables” invoert, vraagt de browser /search?q=html+tables&lang=en op. Die neemt de veldnaam q en de huidige waarde, codeert de spatie als + en verbindt de twee paren met &. De ? begint de querystring.

Een bedieningselement heeft een name nodig om gegevens mee te sturen. De id heeft een ander doel: het element op de pagina identificeren, onder meer om een label te koppelen. Een invoerveld met id="query" maar zonder name kan er normaal uitzien en normaal werken, terwijl het geen antwoord aan het verzoek toevoegt.

Weet welke bedieningselementen gegevens meesturen

Een leeg tekstveld met een naam stuurt een lege waarde mee, zoals comment=. Een aangevinkt selectievakje stuurt zijn value mee; zonder waarde stuurt het on mee. Een niet-aangevinkt selectievakje stuurt niets mee. Een uitgeschakeld bedieningselement is niet beschikbaar en wordt weggelaten. Een ondersteund readonly veld kan niet worden bewerkt, maar stuurt zijn waarde wel mee.

Een verborgen invoerveld, zoals <input type="hidden" name="source" value="newsletter">, stuurt een waarde mee zonder zichtbaar bedieningselement. Die waarde is niet geheim: bezoekers kunnen die in ontwikkelaarstools bekijken en wijzigen.

Maak het gedrag van knoppen expliciet

Binnen een formulier verzendt een gewone <button> standaard het formulier. Schrijf type="submit" voor de verzendknop en type="button" voor een knop die een script nodig heeft. type="reset" herstelt de beginwaarden en kan het werk van een gebruiker wissen. Als je in een veld met één regel op Enter drukt, wordt het formulier ook vaak verzonden. <input type="submit" value="Send"> is een ander verzendelement; een <button> kan ook inline-inhoud bevatten, zoals een pictogram.

Verstuur de inhoud van een bestand
<form action="/upload" method="post" enctype="multipart/form-data">
  <label for="attachment">Attachment</label>
  <input id="attachment" type="file" name="attachment">
  <button type="submit">Upload</button>
</form>

Voor een gewone bestandsupload zijn zowel POST als enctype="multipart/form-data" nodig. Met de standaardcodering van formulieren gaan bestandsnamen als tekst mee, maar de inhoud van de bestanden niet.

Belangrijkste punten

  • De name van een bedieningselement identificeert de verzonden waarde; id identificeert het element op de pagina.
  • GET zet paren in de URL; POST zet ze in de berichtinhoud van het verzoek. HTTPS versleutelt gegevens tijdens het transport.
  • Niet-aangevinkte selectievakjes en uitgeschakelde bedieningselementen worden weggelaten; ondersteunde alleen-lezenvelden worden verzonden.
  • Maak knoptypen expliciet om onbedoeld verzenden of resetten te voorkomen.
  • Bestandsuploads hebben POST en multipart/form-data nodig.

1.2 Invoertypen en de waarden die ze verzamelen

Een <input> is een leeg element en heeft dus geen inhoud en geen sluittag. Het type bepaalt het bedieningselement en de bijbehorende hulp van de browser. Ontbrekende of onbekende typen vallen terug op een tekstveld.

Stem tekst af op het doel
TypeGebruikHulp van de browser
textEén regel vrije tekstAlgemene tekstinvoer
searchEen zoekopdrachtKan een wisknop bevatten
emailEen e-mailadresE-mailtoetsenbord en syntaxiscontrole
urlEen volledig webadresURL-toetsenbord en syntaxiscontrole
telEen telefoonnummerTelefoontoetsenbord; geen formaatcontrole
passwordEen wachtwoordVerbergt de zichtbare tekens

Een e-mailveld controleert de syntaxis, niet of een mailbox bestaat. Zelfs “ana@example” komt door de basissyntaxiscontrole. Voeg multiple toe om een lijst met adressen gescheiden door komma's te accepteren. Een URL-veld verwacht een URL-schema: “https://example.com” wordt geaccepteerd, “example.com” niet. Telefoonformaten verschillen, dus tel legt geen formaatregel op. Het verbergen van wachtwoorden voorkomt dat mensen in de buurt op het scherm kunnen meelezen; HTTPS zorgt nog steeds voor versleuteling tijdens de verzending.

Maak onderscheid tussen hoeveelheden en cijfercodes

Gebruik number voor een hoeveelheid, zoals een aantal of een massa. Het heeft vaak pijltjesknoppen om de waarde te verhogen of te verlagen. Gebruik range voor een instelling bij benadering, zoals volume; het standaardbereik is 0–100 en de standaardwaarde is 50.

Een lidmaatschapscode is geen hoeveelheid. Gebruik <input type="text" inputmode="numeric"> voor een cijfercode, zodat voorloopnullen tekst blijven en pijltjesknoppen de code niet veranderen. inputmode stelt alleen een schermtoetsenbord voor: het valideert de invoer niet. decimal, tel, email en url zijn andere nuttige toetsenbordaanwijzingen.

Houd weergave en verzonden formaat gescheiden

Datumkiezers volgen de regionale instellingen van de gebruiker. 15 maart 2026 kan verschijnen als “03/15/2026” of “15/03/2026”, maar de verzonden datum is 2026-03-15.

TypeVoorbeeld van verzonden waarde
date2026-03-15
time14:30
datetime-local2026-03-15T14:30
month2026-03
week2026-W11

Deze bedieningselementen slaan geen tijdzone op. Als het van belang is, moet bij een lokale afspraaktijd de locatie of tijdzone dus apart worden toegelicht.

Bied onafhankelijke keuzes of één keuze aan

Selectievakjes zijn onafhankelijk: er kunnen er meerdere zijn aangevinkt. Keuzerondjes vormen een groep voor één keuze wanneer hun name-waarden overeenkomen. Geef elk keuzerondje een eigen value en gebruik checked voor een standaardkeuze.

<label><input type="radio" name="size" value="S"> Small</label>
<label><input type="radio" name="size" value="M" checked> Medium</label>
<label><input type="radio" name="size" value="L"> Large</label>

De standaardkeuze verstuurt size=M. Verschillende namen zouden afzonderlijke groepen maken en meerdere keuzes toestaan.

Kies kleuren en bestanden

color biedt een kleurkiezer en kan een RGB-kleur zoals #ff8800 versturen. file opent een bestandskiezer; accept=".pdf,image/*" stelt pdf's en afbeeldingen voor en multiple staat meerdere bestanden toe. Het filter helpt gebruikers bij het kiezen; de server moet het type en de inhoud van het ontvangen bestand nog steeds controleren. Bij bedieningselementen die het gebruiken, stelt value de beginwaarde in. Die blijft de verzonden waarde als de gebruiker niets verandert.

Belangrijkste punten

  • Kies een type op basis van de betekenis van de gegevens, niet alleen op basis van het uiterlijk.
  • De typen voor e-mail en URL controleren de syntaxis; tel en inputmode doen dat niet.
  • Gebruik tekst met een aanwijzing voor een numeriek toetsenbord voor cijfercodes.
  • De weergave van datum en tijd verschilt per regio; verzonden formaten liggen vast en bevatten geen tijdzone.
  • Keuzerondjes delen een naam voor één keuze; selectievakjes staan onafhankelijke keuzes toe.
  • Het accept-filter van een bestandskiezer is geen beveiligingscontrole.

1.3 Lange antwoorden, vaste keuzes en suggesties

Een invoerveld met één regel past niet bij elk antwoord. Langere tekst heeft ruimte nodig, terwijl een vaste reeks keuzes bedieningselementen nodig heeft die laten zien wat is toegestaan. Bepaal voordat je het element kiest of de gebruiker iets buiten de keuzes mag invoeren.

Geef langere tekst een tekstgebied
<label for="message">Message</label>
<textarea id="message" name="message" rows="5" cols="40"></textarea>

rows geeft het zichtbare aantal regels en cols de breedte bij benadering in tekens. Geen van beide beperkt hoeveel tekst kan worden ingevoerd; gebruik maxlength voor een lengtebeperking. Begintekst hoort tussen de tags, niet in een value-attribuut. Spaties en regeleinden op die plaats worden onderdeel van de beginwaarde. Openings- en sluittags direct naast elkaar maken dus een echt leeg veld.

Verstuur een waarde uit een uitklaplijst
<label for="delivery">Delivery</label>
<select id="delivery" name="delivery" required>
  <option value="">Choose delivery</option>
  <option value="standard">Standard (3–5 days)</option>
  <option value="express">Express (next day)</option>
</select>

De keuze voor “Express (next day)” verstuurt delivery=express. De zichtbare tekst kan een keuze toelichten terwijl de value kort en stabiel blijft. Als een optie geen value heeft, wordt de tekst verstuurd. Voeg selected toe om een optie vooraf te selecteren. Hier heeft de eerste optie een lege waarde, zodat de verplichte lijst met één keuze pas kan worden verzonden nadat de gebruiker een bezorgmethode kiest.

Groepeer opties of sta meerdere opties toe

Een <optgroup label="Hot drinks"> geeft samenhangende opties een kop. Die kop is zelf geen keuze. Een select met multiple staat meerdere geselecteerde opties toe en size bepaalt het aantal zichtbare rijen. Elke geselecteerde waarde wordt een afzonderlijk paar met dezelfde naam: topics=html&topics=css.

Op een computer vereist meervoudige selectie vaak Ctrl-klik of Cmd-klik. Voor een korte lijst met onafhankelijke keuzes maken selectievakjes de selectie meestal duidelijker. Voor een korte lijst met één keuze houden keuzerondjes elke optie zichtbaar. Een select is handig voor een lange vaste lijst.

Geef suggesties zonder te beperken
<label for="city">City</label>
<input id="city" name="city" list="cities">
<datalist id="cities">
  <option value="Nairobi">
  <option value="Osaka">
</datalist>

De list van het invoerveld komt overeen met de id van de datalist. Gebruikers zien suggesties, maar mogen nog steeds een andere stad typen. Een datalist is daarom nuttig voor veelvoorkomende antwoorden op een open vraag. Als je een select door een datalist vervangt, verander je de toegestane keuzes; je verandert niet alleen het uiterlijk van dezelfde vaste lijst.

Toon voortgang of een meting

<progress> en <meter> tonen waarden in plaats van antwoorden te verzamelen. Een voortgangsbalk volgt hoever een taak is voltooid, zoals <progress value="70" max="100">70%</progress>. Een meetindicator toont een meting binnen een bekend bereik: <meter value="0.6">60%</meter> kan de gebruikte opslagruimte weergeven. Een meetindicator heeft standaard een bereik van 0–1, tenzij min en max dat veranderen. Tekst binnen deze elementen biedt terugvaltekst wanneer de balk niet kan worden getekend. Zet bij beide weergaven een verklarend label, zodat gebruikers weten wat het getal meet.

Belangrijkste punten

  • De beginwaarde van een tekstgebied is de inhoud ervan; rows en cols bepalen alleen de zichtbare grootte.
  • Een select verstuurt de waarden van geselecteerde opties en kan een vaste keuze afdwingen.
  • Een datalist stelt antwoorden voor, maar staat andere tekst toe.
  • Gebruik progress voor de voltooiing van een taak en meter voor een meting binnen een bekend bereik.

1.4 Zichtbare labels en bruikbare formulierinstructies

Een veld heeft een naam nodig die zichtbaar blijft terwijl de gebruiker het invult. Een gekoppeld <label> geeft het bedieningselement ook een toegankelijke naam voor schermlezers en maakt de tekst tot een groter klikdoel. Instructies leggen regels uit die het label alleen niet kan overbrengen.

Koppel het label aan het bedieningselement
<label for="email">Email address</label>
<input id="email" name="email" type="email" autocomplete="email">

De for van het label komt overeen met de id van het invoerveld, inclusief hoofdletters en kleine letters. De name bepaalt wat wordt verzonden en hoeft niet hetzelfde te zijn. Elke id moet uniek zijn op de pagina. Als for="email" naar een name verwijst maar er geen overeenkomstige id is, ziet het label er normaal uit maar is het niet gekoppeld.

Een andere mogelijkheid is om het invoerveld in het label te plaatsen:

<label>
  <input type="checkbox" name="news">
  Send me the monthly newsletter
</label>

Deze impliciete koppeling is handig voor een kort label bij een selectievakje. Een expliciet paar for en id werkt ook wanneer het label en het bedieningselement in de HTML van elkaar gescheiden zijn.

Houd labels gescheiden van voorbeelden

Een plaatsaanduiding zoals “name@example.com” verdwijnt zodra je begint te typen. Die kan ook moeilijk leesbaar zijn en is geen betrouwbare toegankelijke naam. Behoud het zichtbare label; gebruik een plaatsaanduiding alleen als kort voorbeeld wanneer dat helpt.

Markeer verplichte velden in woorden, zoals “Naam (verplicht)”, of leg een sterretje één keer boven het formulier uit. Kleur alleen kan niet iedereen vertellen wat verplicht is. Leg een formaat uit voordat gebruikers proberen het formulier te verzenden.

<label for="pw">Password (required)</label>
<input id="pw" name="password" type="password"
       required minlength="8" aria-describedby="pw-hint">
<p id="pw-hint">Use at least 8 characters.</p>

aria-describedby verwijst naar de id van de toelichting. Het voegt de instructie toe als beschrijving na de naam van het veld; het vervangt het label niet.

Geef een groep bedieningselementen een naam
<fieldset>
  <legend>Delivery speed</legend>
  <label><input type="radio" name="speed" value="standard"> Standard</label>
  <label><input type="radio" name="speed" value="express"> Express</label>
  <label><input type="radio" name="speed" value="pickup"> Pickup</label>
</fieldset>

Het groepsbijschrift geeft de gezamenlijke vraag; elk label benoemt een antwoord. Een veldengroep kan ook samenhangende adresvelden groeperen. Zet het groepsbijschrift eerst. disabled op een veldengroep schakelt de bedieningselementen daarin uit, behalve bedieningselementen binnen het eerste groepsbijschrift. Houd gewone formulieronderdelen buiten het groepsbijschrift, zodat deze uitzondering niet voor verrassingen zorgt.

Help browsers bekende gegevens in te vullen

autocomplete beschrijft het doel van informatie over de gebruiker. Waarden zijn onder meer name, email, tel, street-address, postal-code, country-name, bday, new-password, current-password en one-time-code. Correct opgegeven doelen ondersteunen het invullen van opgeslagen gegevens en WCAG 2.2-criterium 1.3.5, Identificeer het doel van de input (AA). autocomplete="off" is een verzoek; browsers kunnen nog steeds opgeslagen wachtwoorden aanbieden.

Gebruik voor een optioneel telefoonveld het label “Telefoonnummer (optioneel)” met type="tel", name="phone" en autocomplete="tel". Klik op het label om de focus te controleren en ga daarna met Tab door het formulier. Test elk label op deze manier, ook labels naast selectievakjes en keuzerondjes.

Belangrijkste punten

  • Een zichtbaar label moet echt met zijn bedieningselement zijn gekoppeld.
  • for komt overeen met een unieke id; voor verzending wordt name gebruikt.
  • Een groepsbijschrift benoemt een veldengroep, terwijl labels de afzonderlijke bedieningselementen benoemen.
  • Koppel zichtbare toelichtingen met aria-describedby en markeer verplichte velden in tekst.
  • Geef de juiste doelen voor automatisch aanvullen op en controleer het formulier met klikken en het toetsenbord.
2

Controleer antwoorden vóór verzending

De browser kan ontbrekende antwoorden, tekst met de verkeerde lengte, waarden buiten een bereik en invoer die niet aan een vast formaat voldoet, opsporen. Die controles beginnen bij het invoertype en de HTML-attributen. Ga na hoe verschillende regels samen werken, ook wanneer een lege waarde is toegestaan. Duidelijke instructies helpen mensen hun invoer te verbeteren; controles op de server blijven nodig omdat browserregels kunnen worden omzeild.

2.1 Verplichte velden en tekstlengte

Ingebouwde validatie controleert de bedieningselementen van een formulier wanneer de gebruiker het verzendt. Een ongeldig bedieningselement blokkeert de verzending; de browser zet de focus op het eerste ongeldige veld en geeft een melding in de eigen taal. De browser kiest de exacte bewoording. Om die te veranderen is JavaScript nodig.

Maak een antwoord verplicht

required betekent dat een bedieningselement een waarde nodig heeft. Bij een tekstveld wordt een lege tekenreeks afgewezen. Bij een selectievakje betekent required dat juist dat vakje moet zijn aangevinkt, zoals bij het accepteren van voorwaarden. Als je bij keuzerondjes met dezelfde naam required op één rondje zet, moet één rondje in de groep zijn geselecteerd. Een verplichte select met één keuze en een lege eerste optie vereist een niet-lege keuze.

<label for="username">Username (required)</label>
<input id="username" name="username"
       required minlength="4" maxlength="12">

De browser combineert deze regels. Het veld moet een antwoord bevatten en door de gebruiker ingevoerde tekst moet binnen de lengtebeperkingen vallen. Als je type weglaat, krijg je het gewone tekstinvoerveld.

Tel de ingevoerde tekens

minlength bepaalt de kleinste toegestane lengte en maxlength de grootste. Spaties en leestekens tellen mee. De lengte wordt gemeten in UTF-16-code-eenheden, zodat sommige emoji als twee tellen; gewone Latijnse letters tellen elk als één.

In dit voorbeeld heeft “Li” twee tekens en voldoet het niet aan het minimum. “Lina” heeft er vier en wordt geaccepteerd. “mountainhiker” heeft 13 tekens. Bij gewoon typen stopt de browser na het twaalfde teken, zodat “mountainhike” overblijft. De breedte van een tekstveld bepaalt deze grens niet.

Behandel aanwezigheid en lengte als verschillende regels

Een optioneel veld met minlength="4" mag leeg zijn. De minimumlengte wordt gecontroleerd zodra de gebruiker een waarde opgeeft. Als je required toevoegt, wordt ook een lege invoer afgewezen. Dit is van belang voor een optionele bijnaam: een gebruiker mag die weglaten, maar een opgegeven bijnaam moet nog steeds genoeg tekens hebben.

required is een booleaans attribuut. De aanwezigheid schakelt het in, ook bij required="false". Verwijder het attribuut om het veld optioneel te maken. Dezelfde aanwezigheidsregel geldt voor veel andere HTML-schakelaars.

Weet wat deze controles niet bepalen

Een reeks spaties is nog steeds inhoud in een tekstveld. required accepteert die daarom en de spaties tellen ook mee voor de lengte. Voor een regel die een zichtbaar teken vereist, is een geschikt patroon of een controle op de server nodig. Vertel gebruikers niet dat required alleen een betekenisvol antwoord garandeert.

Lengtebeperkingen hangen ook af van de manier waarop de waarde is ingevoerd. Een beginwaarde in de HTML of een waarde die door een script is ingesteld, wordt niet door minlength of maxlength als ongeldig aangemerkt alleen omdat die te kort of te lang is. Een correcte standaardwaarde blijft belangrijk, ook als gewoon typen wordt beperkt.

Om dit veld te controleren, probeer je een lege verzending en voer je daarna twee letters, vier letters en meer dan 12 letters in. Elke poging onderzoekt een andere regel. Wanneer de browser bij de limiet stopt met typen, lees je welke waarde werkelijk in het veld is achtergebleven in plaats van aan te nemen dat de volledige invoerpoging is geaccepteerd.

Belangrijkste punten

  • required en lengtebeperkingen lossen verschillende problemen op.
  • Booleaanse attributen blijven ingeschakeld, ook als ze met de waarde "false" zijn geschreven.
  • Spaties tellen als inhoud; sommige emoji gebruiken twee UTF-16-code-eenheden.
  • Eén verplicht keuzerondje maakt een keuze verplicht in de groep met dezelfde naam.

2.2 Grenzen en toegestane stappen

Een getal of datum kan het juiste formaat hebben en toch ongeschikt zijn. min en max bepalen de grenzen; step bepaalt welke stappen daarbinnen zijn toegestaan. Een getal moet aan beide controles voldoen.

Stel het bereik in
<label for="weight">Parcel weight (kg)</label>
<input id="weight" name="weight" type="number"
       min="0.5" max="30" step="0.5">

De eindpunten zijn inbegrepen. Waarden van 0,5 tot en met 30 kg liggen binnen het bereik, maar moeten ook op stappen van een halve kilogram uitkomen. Vanaf 0,5 krijg je 0,5; 1; 1,5 enzovoort tot en met 30: 60 toegestane waarden. Een invoer van 31 overschrijdt het maximum; 2,25 ligt binnen het bereik maar voldoet niet aan de stapgrootte.

Zoek het beginpunt voordat je telt

Stappen worden vanaf min geteld als dat aanwezig is. Anders worden ze geteld vanaf een geldig HTML-attribuut value en daarna vanaf de standaardbasis van het type. Voor number is die standaardbasis 0. De standaardstap is 1.

Bij min="1" step="2" zijn de geaccepteerde waarden 1, 3, 5, 7 enzovoort. Vier wordt afgewezen, ook al is het een veelvoud van twee, omdat de reeks bij één begint. Bij min="0.5" zonder step-attribuut is de stap nog steeds één: 0,5; 1,5 en 2,5 worden geaccepteerd, maar 1 en 2 niet.

Als noch min noch een value-attribuut een andere basis geeft, accepteert een standaard getalveld gehele getallen. Gebruik step="0.01" voor stappen van een honderdste of step="any" om de stapcontrole uit te schakelen. any verwijdert het minimum of maximum niet.

Gebruik de juiste eenheden voor datums en tijden
TypeStandaardstapVoorbeeld van een grens
number of range1max="30"
date1 dagmin="2026-06-01"
time60 secondenmax="17:00"

Een datuminvoerveld met min="2026-06-01" max="2026-08-31" accepteert datums in dat gesloten interval. Schrijf de attributen in het verzonden formaat, ook als de kiezer een andere datumvolgorde toont.

Voor afspraken gebruikt type="time" min="09:00" max="17:00" step="900" 900 seconden, ofwel 15 minuten, per stap. De reeks begint om 09.00 uur en eindigt om 17.00 uur. Er zijn 32 tussenpozen en 33 selecteerbare tijden, inclusief beide eindpunten.

Maak onderscheid tussen invoer en opgeslagen waarde

Sommige browsers die aan de taal zijn aangepast, staan decimale invoer als “2,5” toe, maar versturen 2.5. Tekst die geen getal is, wordt geblokkeerd of laat de getalwaarde leeg, afhankelijk van de browser. Een optioneel leeg invoerveld is nog steeds toegestaan tenzij required aanwezig is.

Een range-schuifregelaar blijft binnen het toegestane bereik en springt naar de stappen, zodat gebruikers niet dezelfde bereik- en stapfouten tegenkomen als bij een getypt getal. Daarnaast worden niet-lege email- en url-velden ook zonder required op type gecontroleerd: een optioneel antwoord wordt niet geldig als het verkeerd is opgemaakt.

Belangrijkste punten

  • Controleer de grenzen en of de waarde op een toegestane stap uitkomt afzonderlijk.
  • Zoek de stapbasis in deze volgorde: min, HTML-value, dan de standaardbasis van het type.
  • step="any" schakelt de stapcontrole uit maar behoudt de andere beperkingen.
  • Tijdstappen zijn seconden; datumstappen zijn dagen.
  • Tel de eindpunten mee wanneer je het aantal toegestane tijden bepaalt.

2.3 Vaste patronen en bruikbare feedback

Een patroon is nuttig wanneer een organisatie een exact tekstformaat vastlegt, zoals een productcode. De browser toetst de volledige niet-lege waarde aan het patroon. Leg het formaat naast het veld uit, zodat gebruikers eraan kunnen voldoen voordat een fout verschijnt.

Bouw een klein patroon
<label for="code">Product code (required)</label>
<input id="code" name="code" required
       pattern="[A-Z]{3}-[0-9]{4}" aria-describedby="code-hint">
<p id="code-hint">Use 3 capital letters, a hyphen, and 4 digits (ABC-1234).</p>

[A-Z] komt overeen met één Latijnse hoofdletter en {3} herhaalt die precies drie keer. Het koppelteken buiten de tekengroepen is letterlijk. [0-9]{4} vereist vier cijfers. “ABC-1234” wordt geaccepteerd. “abc-1234”, “ABC1234” en “ABC-12345” overtreden elk een ander deel van de regel.

PatroononderdeelBetekenis
[A-Za-z]Eén standaardletter uit het Latijnse alfabet
{2,5}Twee tot vijf herhalingen
+Eén of meer herhalingen
?Voorafgaand onderdeel is optioneel
(cm|mm)Een van de twee alternatieven, cm of mm

Patronen worden aan de volledige waarde getoetst, dus extra tekst aan het begin of einde wordt afgewezen. Voeg niet de omringende schuine strepen toe die in reguliere expressies van JavaScript worden gebruikt. pattern is van toepassing op tekstachtige invoervelden zoals text, search, tel, email, url en password, niet op een tekstgebied. Lege waarden slaan de patrooncontrole over; required behandelt een leeg antwoord.

Schrijf letterlijke leestekens zorgvuldig

Tekens zoals ., + en ? hebben een speciale betekenis. Zet er een backslash voor als ze letterlijk moeten voorkomen: \. komt overeen met een punt. Binnen een tekengroep vereisen moderne HTML-patronen ook een backslash voor leestekens zoals een letterlijk koppelteken: [a-z0-9\-]. Dit koppelteken verschilt van het koppelteken dat het bereik a-z bepaalt.

Een ongeldig patroon wordt genegeerd. Andere regels, waaronder required en typecontroles, worden nog steeds uitgevoerd. Test een patroon met zowel invoer die moet worden geaccepteerd als invoer die moet worden afgewezen; een formulier dat één verwachte waarde verzendt, heeft nog niet laten zien dat het patroon iets afwijst.

Leg de regel en de fout uit

Zet zichtbare toelichting naast het bedieningselement. Een title kan bijdragen aan sommige browsermeldingen; houd de formaatinstructie zichtbaar naast het veld. Vermijd starre patronen voor namen, telefoonnummers of postcodes, tenzij het toegestane formaat echt vastligt; geldige internationale antwoorden kunnen sterk verschillen.

CSS biedt :valid en :invalid voor de huidige validatiestatus van een veld. :user-invalid stelt de ongeldige toestand uit tot na interactie van de gebruiker, zodat een onaangeraakt formulier niet vol foutopmaak staat. Combineer kleuren met woorden of een pictogram, zodat het onderscheid ook zichtbaar blijft zonder kleurwaarneming.

Bepaal wanneer controles worden uitgevoerd

novalidate op het formulier slaat de validatie door de browser tijdens verzending over. formnovalidate op één verzendknop slaat de validatie voor die knop over. Dat kan een knop “Concept opslaan” naast een gewone knop “Verzenden” ondersteunen. Browsercontroles kunnen ook met ontwikkelaarstools worden verwijderd of met een direct verzoek worden omzeild. De server moet binnenkomende gegevens opnieuw controleren voordat die worden vertrouwd.

Belangrijkste punten

  • Een patroon controleert de volledige niet-lege waarde; required behandelt ontbrekende invoer.
  • Controleer vaste organisatiecodes met patronen en leg hun formaat zichtbaar uit.
  • Een verkeerd opgebouwd patroon wordt genegeerd terwijl andere beperkingen blijven gelden.
  • Gebruik voor de vormgeving van validatietoestanden meer dan alleen kleur.
  • Een overgeslagen of omzeilde browsercontrole maakt validatie op de server essentieel.
  • formnovalidate geldt voor één verzendknop; novalidate geldt voor het formulier.
3

Maak tabellen die hun gegevens verduidelijken

Een gegevenscel krijgt betekenis door de rij en kolom waarin die staat. Met HTML-tabellen kun je die relaties uitdrukken, zodat mensen een waarde kunnen lezen naast de koppen die de waarde verklaren. Begin met een tabelbijschrift en eenvoudige kopcellen en voeg pas rijgroepen of samengevoegde cellen toe als de gegevens dat vereisen. Door het aantal kolommen te tellen en elke waarde aan de juiste kopcellen te koppelen, blijft de tabel bruikbaar wanneer die wordt voorgelezen én wanneer die wordt bekeken.

3.1 Rijen, kopcellen en een duidelijke tabeltitel

Gebruik een tabel wanneer een waarde afhangt van zowel de rij als de kolom: een trainingslogboek, een rooster of een vergelijking van metingen. Gebruik CSS voor de pagina-indeling. Een lay-out van tabelcellen creëert voor schermlezers misleidende relaties tussen rijen en kolommen en past zich slecht aan smalle schermen aan.

Bouw de structuur op vanuit de gegevens

<table> bevat de tabel, <tr> een rij, <th> een kopcel en <td> een gegevenscel. Cellen worden binnen elke rij van links naar rechts geschreven. Een vetgedrukte gegevenscel blijft een gegevenscel; gebruik <th> om een kop aan te geven.

<table>
  <caption>Running log, week 12</caption>
  <thead>
    <tr>
      <th scope="col">Day</th>
      <th scope="col">Distance (km)</th>
      <th scope="col">Time (min)</th>
    </tr>
  </thead>
  <tbody>
    <tr><th scope="row">Monday</th><td>5.0</td><td>28</td></tr>
    <tr><th scope="row">Wednesday</th><td>7.5</td><td>45</td></tr>
    <tr><th scope="row">Saturday</th><td>10.0</td><td>62</td></tr>
  </tbody>
  <tfoot>
    <tr><th scope="row">Total</th><td>22.5</td><td>135</td></tr>
  </tfoot>
</table>

Het tabelbijschrift is het eerste element binnen de tabel. Het vertelt lezers wat de hele tabel beschrijft voordat ze de waarden tegenkomen. Een kop in de buurt kan visueel helpen, maar het tabelbijschrift koppelt de titel aan de tabel zelf.

Koppel elke waarde aan de bijbehorende koppen

scope="col" geeft aan dat een kopcel van boven naar beneden op een kolom van toepassing is. scope="row" geeft aan dat die op een rij van toepassing is. De waarde 7,5 hoort dus bij de rij “Woensdag” en de kolom “Afstand (km)”. Een schermlezer kan die volledige betekenis aankondigen in plaats van een los getal.

Zet eenheden in de kolomkoppen, zodat ze consequent gelden. Elke afstand is hier in kilometers; elke tijd is in minuten. De totale afstand komt van 5,0; 7,5 en 10,0 en is 22,5 km. De tijden 28, 45 en 62 geven 135 min.

Geef elke groep een rol

<thead> groepeert koprijen, <tbody> de hoofdgegevens en <tfoot> het overzicht na de gegevensrijen. Deze groepen beschrijven de structuur en bieden aanknopingspunten voor CSS. Browsers plaatsen een <tbody> om gewone rijen die direct binnen een tabel zijn geschreven, zodat de weergegeven structuur kan verschillen van de bron zonder groepen.

Controleer zowel de betekenis als het uiterlijk

Elke rij beslaat hier drie kolommen. Als je een gegevenscel weglaat, weet de browser niet welke waarde binnen de rij ontbreekt: latere cellen kunnen onder de verkeerde kop komen te staan. Schrijf de cellen op de juiste plaats en gebruik “0” voor een bekende nul of “n.v.t.” wanneer een waarde niet van toepassing is. Bij een onverklaarde lege cel moeten lezers raden.

Tabellen hebben standaard geen randen. Voor eenvoudige lijnen pas je border: 1px solid toe op de cellen en border-collapse: collapse op de tabel. Het oude border-attribuut is verouderd. Een rand helpt het raster zichtbaar te maken, maar kan ontbrekende relaties met kopcellen niet aanvullen of een verkeerd geplaatste waarde corrigeren.

Belangrijkste punten

  • Tabellen drukken relaties tussen rijen en kolommen in gegevens uit.
  • Gebruik th voor kopcellen en td voor gegevens; vetgedrukte tekst geeft geen betekenis aan de cel.
  • Plaats een tabelbijschrift eerst en gebruik scope om eenvoudige kopcellen te koppelen.
  • Groepeer rijen met thead, tbody en tfoot en controleer hoeveel kolommen elke rij beslaat.
  • Zet eenheden in kopcellen en maak de betekenis van ontbrekende gegevens expliciet.

3.2 Samengevoegde cellen en koppen op meerdere niveaus

Met samengevoegde cellen kan één gegeven meerdere posities in het raster beslaan. Ze veranderen hoeveel nieuwe cellen een rij nodig heeft, dus plan de bezette posities voordat je de tags schrijft.

Tel de posities in een rooster met samengevoegde cellen

Neem drie kolommen: “Tijd”, “Maandag” en “Dinsdag”. Om 09.00 uur staat op maandag “Formulieren” en op dinsdag “Tabellen”. Om 10.00 uur begint op maandag “Validatie”, dat doorloopt in de rij van 11.00 uur. Op dinsdag staat om 10.00 uur “Media” en om 11.00 uur “Inbeddingen”. Om 12.00 uur beslaat “Lunchpauze” beide dagen.

<tr>
  <th scope="row">10:00</th>
  <td rowspan="2">Validation</td><td>Media</td>
</tr>
<tr>
  <th scope="row">11:00</th><td>Embeds</td>
</tr>
<tr>
  <th scope="row">12:00</th><td colspan="2">Lunch break</td>
</tr>

Om 11.00 uur is de positie voor maandag al bezet door de cel erboven. De enige nieuwe cellen zijn de tijdkop en het gegeven voor dinsdag. Als je nog een cel voor maandag toevoegt, wordt de laatste waarde naar een vierde kolom verschoven. Om 12.00 uur beslaat de tijdkop één kolom en de lunchcel twee, samen dus drie.

colspan beslaat kolommen horizontaal; rowspan beslaat rijen verticaal. Beide hebben standaard de waarde één. Tel bij het controleren van een rij de posities die door nieuwe cellen en door overspanningen uit eerdere rijen zijn gevuld.

Beschrijf groepen kolommen

<colgroup> en <col> beschrijven kolommen en staan na het tabelbijschrift maar vóór de rijgroepen. <col span="2"> vertegenwoordigt twee kolommen. Slechts een beperkt aantal stijlen is via deze elementen van toepassing, waaronder achtergronden, breedte, zichtbaarheid en randen volgens de geldende regels voor tabelranden. Ze vervangen geen kopcellen.

Voor “Afstand (km)” boven twee kolommen met de namen “Gepland” en “Werkelijk” definieer je die twee kolommen als groep. Geef de bovenste kopcel colspan="2" scope="colgroup"; geef de onderste kopcellen scope="col". De overspanning bepaalt de breedte, terwijl scope de relatie met de kopcel aangeeft. Een toepassingsbereik voor een kolomgroep heeft een bijpassende kolomgroep in de tabelstructuur nodig.

Koppel kopcellen zo nodig expliciet

Voor relaties die scope niet duidelijk kan uitdrukken, geef je kopcellen unieke ID's en vermeld je die in het headers-attribuut van de gegevenscel:

<table>
  <caption>Monday distance plan</caption>
  <colgroup></colgroup>
  <colgroup span="2"></colgroup>
  <thead>
    <tr>
      <th rowspan="2" scope="col">Day</th>
      <th id="distance" colspan="2" scope="colgroup">Distance (km)</th>
    </tr>
    <tr>
      <th id="planned" scope="col">Planned</th>
      <th id="actual" scope="col">Actual</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th id="mon" scope="row">Monday</th>
      <td headers="mon distance planned">8</td>
      <td headers="mon distance actual">7.5</td>
    </tr>
  </tbody>
</table>

De geplande waarde 8 verwijst naar Maandag, Afstand (km) en Gepland. De werkelijke waarde 7,5 deelt de rij- en groepskoppen, maar verwijst naar Werkelijk. De namen, gescheiden door spaties, moeten overeenkomen met de ID's van de kopcellen, niet met hun zichtbare tekst.

De abbr van een kopcel kan een kortere tekst bieden om te herhalen, zoals <th abbr="Distance">Distance covered in kilometers</th>. Sommige schermlezers gebruiken die kortere vorm. Als veel overspanningen of drie kopniveaus een tabel moeilijk te volgen maken, splits je de gegevens op in eenvoudigere tabellen met elk een eigen tabelbijschrift. Plaats liever geen tabel binnen een cel van een andere tabel.

Belangrijkste punten

  • Tel bezette rasterposities, inclusief overspanningen uit eerdere rijen.
  • Een colspan vervangt aangrenzende cellen; een rowspan bezet posities in latere rijen.
  • Gebruik kolomgroepen met scope="colgroup" voor gegroepeerde koppen.
  • De headers van een cel vermeldt de ID's van de bijbehorende kopcellen.
  • Kies liever eenvoudigere tabellen wanneer samenvoegingen en kopniveaus de relaties verhullen.
4

Voeg media toe die mensen kunnen bekijken en beluisteren

Een speler is maar één onderdeel van bruikbare media. Bezoekers hebben ook een ondersteund bestand nodig, een manier om het te starten en te stoppen, en toegang tot de informatie wanneer geluid of beeld niet beschikbaar is. Bouw de speler vanuit het mediabestand op: reserveer ruimte, bied geschikte bronnen aan en koppel gecontroleerde ondertiteling of een transcript. Laadaanwijzingen en verstandige afspeelkeuzes helpen bezoekers ook om grip te houden op de tijd en gegevens die een video kost.

4.1 Spelers, afspelen en downloadkeuzes

<video> en <audio> koppelen mediabestanden aan een pagina. De browser downloadt die afzonderlijke bestanden; de video of het geluid wordt niet in de HTML opgeslagen. Door controls toe te voegen, maak je de afspeelknoppen, pauzeknop, tijdlijn en volumeregeling van de browser zichtbaar.

<video src="intro.mp4" controls width="640" height="360"
       poster="intro-poster.jpg" preload="metadata"></video>
<audio src="episode-12.mp3" controls></audio>

Zonder afspeelbediening heeft een audio-element geen zichtbare speler en een video geen zichtbare afspeelknop. Een pagina heeft dan bediening met een script nodig om gebruikers die toegang te geven. Behoud voor een eenvoudige pagina de ingebouwde afspeelbediening.

Reserveer de juiste vorm

width en height accepteren gewone getallen in CSS-pixels. Ze reserveren ruimte terwijl een video laadt en verminderen zo het verspringen van de pagina. Een video van 1920 × 1080 die met een breedte van 640 wordt getoond, heeft een bijpassende hoogte van 360: de breedte is door drie gedeeld, dus de hoogte moet ook door drie worden gedeeld. Een anders gevormde spelersbox behoudt de verhoudingen van het beeld en voegt lege banden toe.

poster biedt een stilstaand beeld vóór het afspelen. Zonder posterafbeelding wacht de browser op mediagegevens voordat die het eerste beeld kan tonen. De posterafbeelding is nuttig wanneer weinig of geen video vooraf wordt geladen.

Bepaal hoeveel je vooraf laadt
WaardeLaadaanwijzing
noneLaad de media niet vooraf
metadataHaal informatie op zoals de duur en afmetingen
autoDe browser mag het hele bestand downloaden

Dit zijn aanwijzingen: de browser mag ervan afwijken. Automatisch afspelen heeft ook voorrang op vooraf laden. none is nuttig voor lange media die veel bezoekers niet zullen bekijken; metadata helpt de duur te tonen zonder bewust de volledige video op te halen.

Begrijp de afspeelschakelaars

controls, autoplay, muted, loop en playsinline zijn booleaanse attributen. Hun aanwezigheid schakelt ze in: muted="false" start nog steeds met gedempt geluid. Verwijder het attribuut om het uit te schakelen.

Automatisch afspelen met geluid wordt vaak geblokkeerd totdat de gebruiker interactie heeft gehad, afhankelijk van de machtigingen en instellingen van de browser. Gedempte video wordt vaker toegestaan; Safari op de iPhone heeft voor dit gebruik ook playsinline nodig. Een geluidloze herhalende video kan autoplay muted loop playsinline gebruiken. loop start de video opnieuw na het einde. Vertrouw niet op automatisch afspelen om essentiële informatie over te brengen.

Automatisch geluid kan een schermlezer overstemmen en beweging kan afleiden. WCAG 2.2-criterium 1.4.2 (A) vereist een manier om automatische audio die langer dan drie seconden duurt te pauzeren of te stoppen, of het volume ervan onafhankelijk te regelen. Criterium 2.2.2 (A) gaat over automatisch bewegende inhoud die langer dan vijf seconden naast andere inhoud aanwezig is, tenzij de beweging essentieel is. Zorg voor een beschikbare pauzemogelijkheid; de ingebouwde afspeelbediening biedt die bij deze mediaspelers.

Schat het dataverbruik

Een video van twee minuten met 5 megabit per seconde bevat 600 megabit. Gedeeld door acht is dat ongeveer 75 megabyte vóór extra overhead. Kortere video's en een passende aanwijzing voor vooraf laden verminderen onnodige gegevensoverdracht. De iframe-speler van een gehost platform kan de levering van de server van je website naar een andere aanbieder verplaatsen, maar bezoekers downloaden de media nog steeds wanneer ze kijken.

Belangrijkste punten

  • Behoud de ingebouwde afspeelbediening zodat bezoekers het afspelen kunnen starten, pauzeren en aanpassen.
  • Gebruik numerieke breedte en hoogte om ruimte voor een video te reserveren.
  • Vooraf laden is een aanwijzing; automatisch afspelen kan voorrang krijgen.
  • Booleaanse attributen worden ingeschakeld door hun aanwezigheid.
  • Houd rekening met beperkingen op automatisch afspelen en geef gebruikers controle over automatisch geluid of beweging.
  • Een platformspeler verandert wie de media levert, maar de bezoeker moet die nog steeds downloaden.

4.2 Alternatieve bronnen en betrouwbare terugvalmogelijkheden

Een media-extensie geeft de container aan, de bestandsstructuur die beeld en geluid bevat. Codecs comprimeren en decoderen de stromen daarin. Een browser moet zowel de container als de codecs ondersteunen; een extensie .mp4 alleen zegt niet wat erin zit.

Kies geschikte formaten

MP4 met H.264-video en AAC-audio is een breed ondersteunde keuze op gangbare huidige systemen. WebM met VP9- of AV1-video en Opus-audio wordt ook breed ondersteund en kan bij een bepaalde kwaliteit de bestandsgrootte verkleinen. Voor audio is MP3 een breed ondersteunde keuze als je één formaat gebruikt. Ondersteuning hangt nog steeds af van de daadwerkelijke codec en het systeem van de gebruiker, dus test de bestanden zelf.

Bied bronnen in voorkeursvolgorde aan
<video controls width="640" height="360" poster="tour.jpg">
  <source src="tour.webm" type="video/webm">
  <source src="tour.mp4" type="video/mp4">
  <p>Your browser cannot play this video.
    <a href="tour.mp4">Download the tour video (MP4)</a>.
  </p>
</video>
<p><a href="tour.mp4">Download the tour video (MP4)</a></p>

De browser probeert de onderliggende bronnen op volgorde en gebruikt de eerste die kan worden afgespeeld. Hier heeft WebM de voorkeur; MP4 biedt een alternatief als WebM niet kan worden afgespeeld. Laat src weg op de <video> zelf wanneer je onderliggende bronnen gebruikt. Een src op het media-element heeft voorrang en de lijst met onderliggende bronnen wordt genegeerd.

Het type is een MIME-type dat het bestand beschrijft. Daarmee kan de browser een niet-ondersteund formaat overslaan zonder eerst mediagegevens op te halen. Door een verkeerd type kan een afspeelbaar bestand worden overgeslagen, dus de declaratie moet overeenkomen met het daadwerkelijke bestand. Dezelfde niet-ondersteunde codering onder een andere naam vermelden levert geen ondersteund alternatief op.

Zet de terugvalmogelijkheid op een bereikbare plek

Inhoud binnen <video> is terugvalinhoud voor een browser die het video-element niet herkent. Een moderne browser die het wel herkent maar geen enkele bron kan afspelen, toont die binnenste alinea niet als algemene foutmelding. De afzonderlijke downloadlink buiten de speler blijft in dat geval beschikbaar. Een terugvallink en alternatieve bronnen lossen verschillende problemen op.

Pas hetzelfde patroon toe op audio
<audio controls>
  <source src="episode-12.opus" type="audio/ogg; codecs=opus">
  <source src="episode-12.mp3" type="audio/mpeg">
  <p>Your browser cannot play this audio.</p>
</audio>
<p><a href="episode-12.mp3">Download episode 12 (MP3)</a></p>

Dit eerste bestand gebruikt een Ogg-container met Opus-audio. Het MP3-alternatief gebruikt audio/mpeg, het juiste MIME-type voor MP3. De browser kan niet uit de terugvalalinea afleiden dat die van bestand moet wisselen; source-elementen bieden die keuze. Controleer bij het nakijken van de pagina de paden, de daadwerkelijke bestandsformaten en het afspelen, en controleer daarna afzonderlijk of de externe downloadlink werkt.

Belangrijkste punten

  • Voor afspelen is ondersteuning voor zowel de container als de codecs nodig.
  • Onderliggende bronnen worden op volgorde geprobeerd wanneer het media-element geen src heeft.
  • Correcte MIME-typen helpen browsers een afspeelbare bron te kiezen.
  • Zet een downloadlink buiten de speler voor bronfouten in moderne browsers.

4.3 Ondertiteling, transcripten en tijdnotatie in WebVTT

Mensen hebben een andere toegang tot informatie in media nodig als ze die niet kunnen horen of zien. Ondertiteling voor doven en slechthorenden bevat spraak, sprekers en betekenisvolle geluiden. Dialoogondertiteling schrijft of vertaalt de dialoog voor mensen die de audio horen maar hulp nodig hebben om die te begrijpen. Een transcript geeft spraak en belangrijke geluiden als tekst bij de speler of via een duidelijk benoemde link in de buurt. Audiodescriptie beschrijft belangrijke visuele informatie.

Koppel een ondertitelspoor
<video controls>
  <source src="intro.mp4" type="video/mp4">
  <track kind="captions" src="intro.en.vtt"
         srclang="en" label="English" default>
</video>
<p><a href="intro-transcript.html">Read the introduction transcript</a></p>

Plaats <track> na de bronnen. src verwijst naar een tekstspoorbestand, kind geeft het doel aan, srclang de taal en label levert de menutekst van de speler. Een spoor met dialoogondertiteling moet srclang hebben; neem het ook op voor ondertiteling voor doven en slechthorenden. Slechts één spoor mag default hebben. Zonder kind is de standaardwaarde subtitles.

Schrijf het ondertitelbestand

WebVTT is UTF-8-tekst die wordt opgeslagen met de extensie .vtt. De eerste regel is WEBVTT, gevolgd door een lege regel. Elk tekstsegment heeft daarna een tijdregel en tekst, met een lege regel vóór het volgende segment. Een optionele identificatie kan vóór de tijdregel van een segment staan.

WEBVTT

00:00:01.000 --> 00:00:04.500
MAYA: Welcome to the workshop.

00:00:05.000 --> 00:00:07.250
[door closes]

00:00:07.500 --> 00:00:11.000
MAYA: Let's build our first form.

Het eerste tekstsegment duurt 3,5 seconden, het tweede 2,25 seconden en het derde 3,5 seconden. Het geluidssegment brengt iets over wat een luisteraar hoort, ook al spreekt er niemand.

Houd de tijdsyntaxis exact

Minuten en seconden gebruiken twee cijfers; milliseconden gebruiken er drie na een punt. Uren mogen worden weggelaten: 01:05.000 betekent één minuut en vijf seconden. Het einde moet later zijn dan het begin. Een lege regel beëindigt een tekstsegment, dus houd alle tekst ervan bij elkaar zonder lege regel ertussen.

SRT gebruikt tijdsaanduidingen met een komma, zoals 00:00:01,000; een spoor heeft in plaats daarvan WebVTT nodig. Voor de omzetting zijn de WebVTT-header en tijdsaanduidingen met punten nodig, en moet je de rest van de tekstsegmenten op geldige syntaxis controleren. Alleen de extensie .srt hernoemen zet de inhoud niet om.

Controleer levering en toegankelijkheid

Houd het spoor op dezelfde oorsprong als de pagina: hetzelfde URL-schema, dezelfde host en dezelfde poort. Een spoor van een andere oorsprong heeft een geschikte crossorigin-instelling op de video en toestemming van die server nodig. Anders kan een correct bestand toch niet laden.

WCAG 2.2-criterium 1.2.2 (A) vereist ondertiteling voor doven en slechthorenden bij vooraf opgenomen video met audio, behoudens de uitzondering voor media-alternatieven. Criterium 1.2.1 (A) vereist een alternatief voor vooraf opgenomen inhoud met alleen audio, zoals een transcript voor een podcast. Controleer automatische ondertiteling vóór publicatie op namen, vaktermen, wisselingen van spreker en geluiden.

Andere spoortypen zijn descriptions, chapters en metadata. Browserspelers tonen die doorgaans niet als gewone ondertiteling. Zet essentiële zichtbare instructies niet in een metadataspoor in de verwachting dat ze op het scherm verschijnen.

Belangrijkste punten

  • Ondertiteling voor doven en slechthorenden bevat betekenisvolle geluiden en informatie over sprekers; dialoogondertiteling richt zich op de dialoog.
  • Koppel een .vtt-bestand met track en geef het doel en de taal aan.
  • Een WebVTT-tekstsegment heeft geldige tijdsaanduidingen met punten, tekst en een afsluitende lege regel nodig.
  • Controleer of ondertiteling klopt en bied in de buurt toegang tot een transcript.
  • Sporen van een andere oorsprong hebben zowel browserinstellingen als toestemming van de server nodig.
5

Sluit een andere pagina zorgvuldig in

Een iframe geeft een andere webpagina een venster binnen je eigen pagina. Die pagina brengt eigen code, machtigingen en laadgedrag mee en is afhankelijk van de aanbieder. Geef het venster een bruikbare naam en afmeting en kies vervolgens wanneer het laadt en wat het mag doen. Als je begrijpt dat een inbedding een afzonderlijk document is, helpt dat om geblokkeerde frames, privacykeuzes en het feit dat de stijlen van je pagina niet doordringen tot de speler van een andere website te verklaren.

Een <iframe> is een inlineframe: het toont een afzonderlijke webpagina binnen de huidige pagina. Dat document heeft eigen HTML, CSS en scripts. De stijlen van je pagina kunnen de afmetingen van het frame bepalen, maar geven de inhoud van een ander document daarin niet vorm.

Begin met een duidelijk frame met afmetingen
<iframe src="https://maps.example.com/venue"
        title="Map of the venue"
        width="600" height="400" loading="lazy"></iframe>
<p><a href="https://maps.example.com/venue">Open the venue map</a></p>

src geeft de te laden pagina aan. De titel vertelt een schermlezergebruiker wat er in het frame staat voordat die het binnengaat. “Kaart van de locatie” beschrijft het doel; “iframe” of “inhoud” niet. De directe link biedt een andere route als de browser van de bezoeker het frame blokkeert.

width en height accepteren gewone getallen in CSS-pixels. Zonder deze attributen is het standaardframe 300 × 150 CSS-pixels. Browsers tekenen ook een standaardrand. Geef die vorm met CSS in plaats van met het verouderde attribuut frameborder.

Pas aangeboden inbedcode aan

Kaart- en videodiensten bieden meestal een inbedfragment aan bij hun deelknoppen. Inspecteer na het plakken de URL, verbeter de titel, controleer de afmetingen en verwijder verouderde opmaakattributen. Een iframe-URL is het adres van een pagina of speler van een dienst, niet per se van een rechtstreeks mediabestand.

Gebruik HTTPS voor het ingesloten adres. Een HTTP-frame binnen een HTTPS-pagina is actieve gemengde inhoud en wordt geblokkeerd. Alleen een titel schrijven of de afmetingen van het frame veranderen kan een onveilige URL niet laten laden.

Laad op een geschikt moment

loading="lazy" stelt het laden van een frame uit totdat het dicht bij de viewport is. Dat bespaart werk bij het openen van de pagina voor bijvoorbeeld een kaart ver onderaan. De standaardwaarde eager begint direct met laden. Gebruik direct laden voor een prominente inbedding bovenaan, zodat bezoekers niet op de hoofdinhoud hoeven te wachten. Uitgesteld laden verandert het tijdstip; het neemt het netwerkcontact niet weg wanneer het frame uiteindelijk laadt.

Om een speler in de container te laten passen, kan CSS de breedte op 100% zetten en de vorm behouden:

iframe.video-player {
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  border: 0;
}

Pas class="video-player" toe op het betreffende iframe. De HTML-afmetingen bieden nog steeds begininformatie, terwijl CSS de weergegeven grootte bepaalt.

Herken een weigering van een aanbieder

Een website kan inbedding verbieden via de HTTP-antwoordheader X-Frame-Options of een Content Security Policy-regel frame-ancestors. De browser kan een leeg frame of een fout tonen. Deze beperkingen helpen clickjacking te voorkomen, waarbij een misleidende ingesloten pagina klikken opvangt die voor iets anders waren bedoeld.

De HTML van je pagina kan de weigering van de andere website niet opheffen. Gebruik het toegestane inbedadres van de aanbieder als die er een biedt; geef anders een gewone link. Behoud die link ook voor toekomstige problemen: als een aanbieder inhoud verwijdert of verplaatst, kan een ongewijzigd iframe op je pagina stoppen met werken.

Belangrijkste punten

  • Een iframe bevat een afzonderlijk document met eigen stijlen en scripts.
  • Geef elk frame een beschrijvende titel en zinvolle afmetingen.
  • Gebruik uitgesteld laden voor inbeddingen buiten beeld en gebruik HTTPS-URL's.
  • Een aanbieder kan inbedding weigeren; bied dan een directe link aan.

5.2 Machtigingen, privacy en elementkeuze

Een inbedding van een derde partij neemt contact op met de aanbieder wanneer de ingesloten inhoud laadt, zelfs voordat een bezoeker op afspelen drukt. Dat verzoek onthult informatie zoals een IP-adres en kan cookies gebruiken. Bepaal of de pagina dat contact direct nodig heeft en welke toegang het ingesloten document nodig heeft.

Stel contact uit wanneer dat passend is

Uitgesteld laden stelt een frame buiten beeld uit totdat het bijna op het scherm verschijnt. Een voorbeeld dat een inbedding pas na een klik laadt, geeft bezoekers een directere keuze. Sommige diensten bieden ook modi met verbeterde privacy. Een frame van dezelfde website neemt niet vanzelf contact op met een andere aanbieder; rechtstreeks opgenomen srcdoc voorkomt het ophalen van een afzonderlijke pagina, al kunnen bronnen waarnaar die HTML verwijst nog steeds netwerkverzoeken doen.

Beperk documentgedrag met sandbox
<iframe src="https://quiz.example.com/start"
        title="Practice quiz"
        sandbox="allow-scripts allow-forms"></iframe>

Een lege sandbox past alle beperkingen toe, waaronder het blokkeren van scripts, formulierverzending en pop-ups, en kent een ondoorzichtige oorsprong toe. Tokens heffen geselecteerde beperkingen op. Hier mag de quiz scripts uitvoeren en formulieren verzenden, maar allow-popups is niet toegekend. Voeg alleen tokens toe die de inhoud nodig heeft; anders kan een gekopieerde lijst met machtigingen nuttige beperkingen ongedaan maken.

allow-same-origin laat het document zijn normale oorsprong behouden. Combineer dit niet met allow-scripts voor ingesloten inhoud van je eigen oorsprong: door die combinatie kan het document mogelijk zijn sandbox verwijderen. Een sandbox betekent ook niet dat een frame geen netwerkverzoeken doet.

Verleen browserfuncties afzonderlijk

allow is een machtigingenbeleid voor functies zoals volledig scherm, beeld-in-beeld, camera en microfoon. Een videospeler kan allow="fullscreen; picture-in-picture" vragen. Die heeft geen cameratoegang nodig alleen omdat de speler video bevat. Het oudere allowfullscreen verleent ook toegang tot volledig scherm.

Sandbox-tokens regelen het gedrag van het document; functiemachtigingen beantwoorden een andere vraag. Toegang tot volledig scherm verlenen laat een pagina in een sandbox niet vanzelf een formulier verzenden of een script uitvoeren.

Beheer het verwijzende adres en rechtstreeks opgenomen inhoud

referrerpolicy="no-referrer" laat het adres van de verwijzende pagina weg uit het verzoek. Bij het gebruikelijke standaardbeleid verstuurt een HTTPS-verzoek naar een andere oorsprong de oorsprong in plaats van het volledige pad; verzoeken naar een minder veilige verbinding versturen geen verwijzend adres. Dit regelt één header, niet alle informatie die een aanbieder ontvangt.

srcdoc levert de HTML van het frame rechtstreeks aan en heeft voorrang op src:

<iframe title="Message preview" sandbox
        srcdoc="<p>Preview of your message</p>"></iframe>

De sandbox houdt dit kleine voorbeeld beperkt. Bij algemenere HTML-voorbeelden moet je zorgvuldig omgaan met de bronnen en opmaakcode die je toestaat.

Kies het element voor de bron
BronElement
Afbeeldingimg
Audio- of videobestandaudio of video
Een webpagina, kaart of speler van een dienstiframe
Extern document zoals een pdfobject of embed

<object> kan terugvalinhoud bevatten, zoals een downloadlink, als de bron niet kan worden weergegeven. Oude plug-ininhoud zoals Flash werkt niet meer in gewone huidige browsers; Adobe beëindigde de ondersteuning voor Flash Player eind 2020. Zet directe links naast belangrijke inbeddingen en controleer regelmatig of de aanbieder ze nog beschikbaar stelt.

Belangrijkste punten

  • Bij het laden van inhoud van derden wordt al vóór het afspelen contact opgenomen met de aanbieder.
  • Een sandbox begint met beperkingen; tokens herstellen geselecteerde mogelijkheden.
  • Houd allow-scripts en allow-same-origin gescheiden voor inhoud van dezelfde oorsprong.
  • Gebruik allow voor benodigde browserfuncties en het verwijzingsbeleid voor het verwijzende adres.
  • Kies media-elementen voor mediabestanden en iframes voor afzonderlijke pagina's.

Webformulieren, tabellen en media: voorbeelden

5 Walkthroughs

1

Maak een aanmeldformulier voor een workshop

20 stappen
Kies en koppel bedieningselementen en volg daarna welke waarden een aanmeldformulier verstuurt.
  1. 1
    IntroductieBegin bij de antwoorden die je nodig hebt

    Voor een workshopaanmelding zijn een naam, contactgegevens, één sessiekeuze, optionele interesses en een bericht nodig. Elk antwoord heeft een passend bedieningselement en een label nodig.

    Bouw het formulier in lagen op: bepaal waar het gegevens naartoe stuurt, kies de bedieningselementen en koppel daarna labels en instructies. Je controleert zowel wat een bezoeker kan invoeren als wat het ontvangende programma bereikt.

  2. 2
    UitlegKies een bestemming en methode

    Gebruik <form action="/registrations" method="post"> om een aanmelding naar de ontvangende URL te versturen. POST zet de antwoorden in de berichtinhoud van het verzoek en past bij een verzending waarmee opgeslagen gegevens worden aangemaakt.

    De verbinding heeft nog steeds HTTPS nodig voor versleuteling. Een methode maakt de informatie op zichzelf niet privé en de HTML slaat de aanmelding niet op; dat doet het ontvangende programma.

  3. 3
    VoorbeeldGeef het antwoord een gegevenssleutel

    Begin met <input id="attendee" name="attendee">. Als de bezoeker “Nora” invoert, stuurt het bedieningselement attendee=Nora mee.

    De name vertelt het ontvangende programma om welk antwoord het gaat. De id identificeert het veld op de pagina. Als je de naam verwijdert, kan een veld overblijven dat lijkt te werken maar niets met de verzending meestuurt. Een later label wordt via de id gekoppeld.

  4. 4
    UitdagingVoorspel welke velden worden verstuurd

    Een formulier heeft <input name="guest" value="Nora">, <input name="notes" value=""> en een niet-aangevinkt selectievakje met de naam updates. Welke velden sturen gegevens mee?

    ---reveal---

    De tekstinvoervelden sturen guest=Nora en notes= mee. Het niet-aangevinkte selectievakje stuurt geen paar mee. Een lege tekstwaarde verschilt van een weggelaten selectievakje: het ene benoemt een veld zonder tekst; het andere ontbreekt in de verzonden gegevens.

  5. 5
    TipMaak verzending een bewuste keuze

    Voeg <button type="submit">Register</button> toe. Een knop binnen een formulier verzendt standaard het formulier, dus een expliciet type maakt de bedoeling duidelijk.

    Als je later een knop voor een actie met een script toevoegt, gebruik dan type="button". Een resetknop herstelt de beginwaarden en kan alle invoer van de bezoeker wissen. Ook een druk op Enter in een veld met één regel kan verzending starten, dus het formulier moet werken zonder afhankelijk te zijn van een muisklik.

  6. 6
    UitlegKies invoertypen voor contactgegevens

    Gebruik type="email" voor het e-mailadres en type="tel" voor een optioneel telefoonnummer. Deze typen sturen de keuze van het telefoontoetsenbord, maar hun controles verschillen.

    Email controleert de syntaxis, niet of de mailbox bestaat. Tel legt geen telefoonformaat op. Een wachtwoordveld verbergt tekens op het scherm, maar heeft tijdens verzending nog steeds HTTPS nodig. Kies typen voor de informatie die ze vertegenwoordigen, niet alleen voor het gewenste toetsenbord.

  7. 7
    VoorbeeldHoud codes als tekst

    Stel dat de workshop leden een cijfercode stuurt. Gebruik daarvoor type="text" inputmode="numeric". De aanwijzing voor een numeriek toetsenbord maakt cijfers gemakkelijk in te voeren zonder de code in een hoeveelheid te veranderen.

    Een number-invoerveld kan pijltjesknoppen en gedrag voor hoeveelheden bieden, die ongeschikt zijn voor een identificatiecode. inputmode zelf controleert niets; een vast codeformaat kan een afzonderlijke validatieregel krijgen.

  8. 8
    UitlegMaak een groep keuzerondjes voor één sessie

    Bied drie sessies aan met keuzerondjes die allemaal name="session" gebruiken. Geef ze waarden zoals morning, afternoon en evening.

    Als je het rondje voor de middag kiest, wordt session=afternoon meegestuurd en vervalt de vorige keuze in die groep. Bij verschillende namen kunnen meerdere sessies geselecteerd blijven. Gebruik afzonderlijke selectievakjes voor onafhankelijke interesses, omdat bezoekers er mogelijk meer dan één willen kiezen.

  9. 9
    UitdagingHerstel een groep voor één keuze

    Twee keuzerondjes voor sessies gebruiken name="morning" value="morning" en name="afternoon" value="afternoon". Een bezoeker kan beide selecteren. Welke wijziging maakt er één groep van?

    ---reveal---

    Geef beide dezelfde naam, zoals name="session", en behoud hun verschillende waarden. Gedeelde namen vormen de groep; verschillende waarden identificeren de gekozen sessie. Alleen hun id's gelijk maken zou dubbele identificaties op de pagina opleveren zonder de groepering te herstellen.

  10. 10
    KernpuntMaak onderscheid tussen een weergegeven datum en de waarde

    Een datumkiezer kan dezelfde dag op verschillende apparaten in een andere volgorde tonen. Een invoerveld van het type date verstuurt nog steeds een vaste waarde in de volgorde jaar-maand-dag, zoals 2026-11-18.

    De weergave volgt de regionale instellingen van de bezoeker; het verzoek kopieert die weergavetekst niet. Datum- en tijdinvoervelden geven geen tijdzone mee. Een afspraak heeft daarom voldoende zichtbare context nodig, zodat de bezoeker weet van welke locatie de tijd wordt bedoeld.

  11. 11
    VoorbeeldBied een verplichte vaste keuze aan

    Een lange lijst met workshoplocaties past bij een select. Geef die een lege eerste optie, zoals <option value="">Choose a location</option>, en voeg required toe aan de select.

    Elke echte optie heeft een eigen verzonden waarde. Als je <option value="studio">Main studio</option> kiest, wordt het vaste sleutel-waardepaar location=studio verstuurd wanneer de select location heet. Het zichtbare label kan beschrijvend blijven.

  12. 12
    VoorbeeldLaat ruimte voor een bericht

    Voeg <textarea id="message" name="message" rows="5"></textarea> toe voor een langer antwoord. Begintekst hoort tussen de tags; de aangrenzende tags houden de beginwaarde hier leeg.

    Rows bepaalt de zichtbare hoogte, niet de maximale lengte van het antwoord. Een datalist heeft een andere taak: koppel die via de list van een invoerveld om suggesties te bieden terwijl andere antwoorden mogelijk blijven. Die kan de vaste keuzes van de select niet afdwingen.

  13. 13
    UitdagingKies tussen suggesties en vaste antwoorden

    De workshop staat alleen de genoemde locaties toe, maar iemand vervangt de select door een tekstinvoerveld dat aan een datalist is gekoppeld. Kan de bezoeker nu een niet-vermelde locatie typen?

    ---reveal---

    Ja. Een datalist biedt suggesties zonder het antwoord te beperken. Behoud een select als precies de aangeboden keuzes zijn toegestaan. Gebruik een datalist wanneer een ander antwoord mogelijk moet blijven, zoals een stad die niet bij de gebruikelijke suggesties staat.

  14. 14
    VerbandToon de status zonder een antwoord te verzamelen

    Een voortgangsbalk kan tonen hoever de verwerking van een aanmelding is gevorderd. Een meetindicator kan een meting binnen een bekend bereik tonen, zoals opslaggebruik.

    Geen van beide is een invoerelement voor antwoorden. Gebruik <progress value="70" max="100">70%</progress> voor de voltooiing van een taak en geef er verklarende tekst bij. Gebruik voor een groep onafhankelijke optionele interesses selectievakjes, zodat bezoekers hun keuzes daadwerkelijk kunnen wijzigen en versturen.

  15. 15
    VoorbeeldKoppel een zichtbaar label

    Schrijf <label for="attendee">Name (required)</label> naast het invoerveld met id="attendee". De waarde van for moet exact overeenkomen met de id, inclusief hoofdletters en kleine letters.

    Als je op het label klikt, moet het invoerveld focus krijgen. Houd het label zichtbaar tijdens het typen; een plaatsaanduiding kan die taak niet vervullen. De tekst die aangeeft dat het veld verplicht is, vertelt de gebruiker wat wordt verwacht, terwijl het required-attribuut de browser laat controleren of er invoer is.

  16. 16
    UitlegGeef de keuzes een gezamenlijke vraag

    Plaats de keuzerondjes voor sessies in een fieldset waarvan het eerste kindelement <legend>Session</legend> is. Behoud een afzonderlijk label voor elke optie.

    Het groepsbijschrift legt de gezamenlijke vraag uit; de labels benoemen de antwoorden. Voor contactvelden helpen correcte autocomplete-waarden zoals name, email en tel de browser om opgeslagen gegevens aan te bieden. Een formaattoelichting in de buurt kan via aria-describedby aan de id van de toelichting worden gekoppeld.

  17. 17
    UitdagingZoek de verbroken labelkoppeling

    De opmaakcode bevat <label for="contact">Email</label> en <input id="email" name="contact" type="email">. Waarom krijgt dat invoerveld geen focus als je op het label klikt?

    ---reveal---

    De waarde van for komt overeen met de name maar niet met de id. Verander die in for="email" of kies een nieuwe overeenkomende unieke id. De name dient al voor verzending, dus als je de labelkoppeling verandert, hoef je de gegevenssleutel die het ontvangende programma verwacht niet te veranderen.

  18. 18
    TipVoeg een upload alleen met de bijbehorende codering toe

    Als voor de aanmelding een document nodig is, voeg je een type="file"-invoerveld met een naam toe en stel je enctype="multipart/form-data" in op het POST-formulier. Deze codering verstuurt de inhoud van het bestand.

    Een accept-filter kan helpen bij de bestandskeuze, maar bepaalt niet wat de server ontvangt. Onthoud ook dat uitgeschakelde bedieningselementen worden weggelaten, terwijl ondersteunde alleen-lezenvelden worden verzonden. Gebruik het attribuut dat past bij het gewenste gedrag van de gegevens.

  19. 19
    UitdagingControleer het voltooide formulier

    Een locatieveld met label biedt alleen suggesties via een datalist en het e-mailveld heeft een id maar geen name. De bezoeker moet een vermelde locatie kiezen en de server heeft het e-mailadres nodig. Welke twee reparaties zijn nodig?

    ---reveal---

    Gebruik een select voor de vaste locatiekeuzes en voeg een name toe aan het e-mailveld. De select bepaalt welke keuzes worden aangeboden; de name geeft het e-mailadres een sleutel bij verzending. Een zichtbaar label alleen lost geen van beide problemen op.

  20. 20
    SamenvattingLees het formulier in twee richtingen

    Controleer vanuit de bezoeker het type bedieningselement, het zichtbare label, de gezamenlijke vraag en de instructies. Controleer vanuit de server de bestemming, methode, namen en meegestuurde waarden.

    Klik daarna op elk label en ga met Tab door het formulier. Deze controles vinden verschillende fouten: een formulier kan gemakkelijk in te vullen zijn maar gegevens weglaten, of correcte gegevens versturen terwijl het moeilijk te begrijpen is.

2

Debug de validatieregels van een formulier

15 stappen
Volg ontbrekende waarden, lengtes, stappen en vaste formaten voordat je bepaalt waarom een verzending wordt geaccepteerd of afgewezen.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieVolg de controles die verzending blokkeren
  2. 2
    UitlegMaak een schermnaam verplicht
  3. 3
    VoorbeeldTest aanwezigheid en lengte afzonderlijk
  4. 4
    UitdagingMaak het veld optioneel
  5. 5
    TipTest gebruikersinvoer, niet alleen de standaardwaarde
  6. 6
    VoorbeeldControleer eerst het bereik
  7. 7
    VoorbeeldTel vanaf de werkelijke basis
  8. 8
    UitdagingMaak onderscheid tussen stap en maximum
  9. 9
    VerbandLees tijdstappen in seconden
  10. 10
    UitlegControleer de vaste code van de organisatie
  11. 11
    UitdagingZoek een genegeerd patroon
  12. 12
    TipLeg de fout uit en maak die zichtbaar
  13. 13
    KernpuntEen gebruiksvriendelijke controle is geen vertrouwensgrens
  14. 14
    UitdagingOnderzoek verschillende fouten
  15. 15
    SamenvattingGebruik een korte lijst met grenstests
3

Maak en controleer een sessierooster

11 stappen
Maak een leesbare tabel en voeg daarna cellen samen zonder het raster of de relaties met kopcellen te verstoren.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductiePlan de tabel vóór de tags
  2. 2
    UitlegGeef de tabel en kolommen een naam
  3. 3
    VoorbeeldSchrijf één volledige gegevensrij
  4. 4
    UitdagingHerstel een kop die alleen visueel is
  5. 5
    TipHoud de betekenis van lege cellen duidelijk
  6. 6
    VoorbeeldLaat één sessie twee rijen duren
  7. 7
    UitdagingTel een rij onder een rowspan
  8. 8
    VoorbeeldLaat de lunch beide zalen beslaan
  9. 9
    UitlegKoppel een cel aan kopcellen op meerdere niveaus
  10. 10
    UitdagingHerstel uitlijning en betekenis samen
  11. 11
    SamenvattingVolg een waarde door de tabel
4

Publiceer een korte video met ondertiteling

17 stappen
Maak een ingebouwde speler, bied alternatieve bestanden aan en koppel een werkend WebVTT-ondertitelspoor.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductiePubliceer zowel de informatie als het bestand
  2. 2
    VoorbeeldReserveer ruimte voor een speler met afspeelbediening
  3. 3
    UitlegGebruik een laadaanwijzing bewust
  4. 4
    UitdagingSchakel een booleaanse instelling uit
  5. 5
    TipLaat mensen automatisch afspelende media pauzeren
  6. 6
    UitlegControleer container en codecs
  7. 7
    VoorbeeldVoeg de voorkeursbron eerst toe
  8. 8
    UitdagingZoek de ongebruikte alternatieven
  9. 9
    KernpuntHoud een terugvalmogelijkheid buiten de speler
  10. 10
    UitlegKies ondertiteling voor geluidsinformatie
  11. 11
    VoorbeeldSchrijf het eerste tekstsegment
  12. 12
    VoorbeeldVoeg een betekenisvol geluidssegment toe
  13. 13
    VoorbeeldKoppel het bestand na de bronnen
  14. 14
    UitdagingZet een tijdsaanduiding correct om
  15. 15
    TipTest het spoor en het transcript
  16. 16
    UitdagingHerstel twee afzonderlijke toegankelijkheidsproblemen
  17. 17
    SamenvattingControleer de volledige mediaroute
5

Beoordeel een ingesloten kaart en quiz

12 stappen
Geef een frame een naam en afmetingen, kies het laadgedrag en beperk de mogelijkheden tot wat de inhoud nodig heeft.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieBehandel een inbedding als een ander document
  2. 2
    VoorbeeldGeef de kaart een naam voordat je die laadt
  3. 3
    UitlegStel het laden van een kaart onder de hoofdinhoud uit
  4. 4
    TipInspecteer gekopieerde inbedcode
  5. 5
    UitdagingHerken een inbeddingsregel van een server
  6. 6
    UitlegBegin de quiz met beperkingen
  7. 7
    KernpuntHoud oorsprong en scripts onder controle
  8. 8
    UitdagingGeef de quiz alleen wat die nodig heeft
  9. 9
    VerbandMaak onderscheid tussen privacy en een verwijzingsheader
  10. 10
    UitlegKies een element voor de werkelijke bron
  11. 11
    UitdagingBeoordeel een gewijzigde inbedding
  12. 12
    SamenvattingBeoordeel het frame als een kleine afhankelijkheid

Webformulieren, tabellen en media: oefenvragen

40 Oefenvragen in 4 sets

Set 1: Verzamel en verstuur de juiste antwoorden10 Oefenvragen

Vraag 1 van 10

Een ingevuld invoerveld heeft id="visitor" maar geen name. Waarom ontbreekt de tekst in de verzonden formuliergegevens?
  1. Het formulier heeft POST nodig om tekstvelden mee te sturen.
  2. Het invoerveld heeft een naam nodig als gegevenssleutel.
  3. Het invoerveld heeft required nodig om de waarde mee te sturen.
  4. De id moet overeenkomen met het adres van de ontvangende pagina.
Toon antwoordVerberg antwoord
Antwoord: B
De browser bouwt verzonden gegevens op uit bedieningselementen met een naam, dus dit invoerveld heeft een name-attribuut nodig. De id identificeert het element op de pagina en kan een label koppelen, maar levert geen sleutel voor verzending. Als je het verzoek van GET naar POST verandert, stuurt dit naamloze bedieningselement de tekst nog steeds niet mee.

Vraag 2 van 10

Een website verzamelt een apparaatcode zoals “00482”. Welke instelling past bij die identificatiecode en stelt een numeriek toetsenblok voor?
  1. type="number" step="1"
  2. type="range" min="0"
  3. type="tel" multiple
  4. type="text" inputmode="numeric"
Toon antwoordVerberg antwoord
Antwoord: D
De apparaatcode is tekst die een voorwerp identificeert, dus een tekstinvoerveld behoudt die functie, inclusief voorloopnullen. De numerieke invoermodus stelt een cijfertoetsenbord voor zonder het gedrag van een getalveld. Een getalveld behandelt de invoer als een hoeveelheid en kan knoppen tonen om die te verhogen of te verlagen.

Vraag 3 van 10

Het label gebruikt for="address"; het e-mailveld gebruikt id="email" name="address". Welke ene wijziging koppelt dit label zonder de verzonden gegevenssleutel te veranderen?
  1. Verander het label in for="email".
  2. Verander het invoerveld in type="text".
  3. Verander het invoerveld in name="email".
  4. Verander het label in name="address".
Toon antwoordVerberg antwoord
Antwoord: A
Een expliciet label wordt gekoppeld via de id van het bedieningselement, dus for="email" maakt de ontbrekende overeenkomst. De name kan address blijven, zodat de sleutel die het ontvangende programma verwacht behouden blijft. Alleen de name veranderen zou het label naar een id laten verwijzen die nog steeds niet bestaat.

Vraag 4 van 10

Een select voor bezorging is verplicht en de eerste geselecteerde optie is <option value="">Choose delivery</option>. Wat gebeurt er als de gebruiker verzendt zonder een andere optie te kiezen?
  1. De zichtbare keuzetekst wordt als waarde verstuurd.
  2. De browser verstuurt de eerste niet-lege optie.
  3. De lege selectie blokkeert normale verzending.
  4. De select wordt weggelaten en het formulier verstuurd.
Toon antwoordVerberg antwoord
Antwoord: C
De verplichte select met één keuze is ongeldig zolang de lege eerste optie geselecteerd blijft, dus normale verzending wordt geblokkeerd. De keuzetekst wordt niet de waarde omdat expliciet een lege waarde is opgegeven. De browser kiest niet ongemerkt een andere bezorgmethode voor de gebruiker.

Vraag 5 van 10

Een GET-formulier richt zich op /lookup en bevat een tekstinvoerveld name="term" met “css grid”, een niet-aangevinkt selectievakje name="archived" value="yes" en een uitgeschakeld invoerveld name="region" value="east". Welke verzoek-URL ontstaat?
  1. /lookup?term=css+grid&archived=no&region=east
  2. /lookup?term=css+grid
  3. /lookup?term=css+grid&archived=&region=
  4. /lookup?term=css+grid&region=east
Toon antwoordVerberg antwoord
Antwoord: B
Het tekstinvoerveld met een naam stuurt de huidige waarde mee, waarbij de spatie als + wordt gecodeerd. Het niet-aangevinkte selectievakje en het uitgeschakelde invoerveld worden beide weggelaten, zodat alleen term=css+grid overblijft. Een uitgeschakelde waarde wordt niet verstuurd alleen omdat die in de HTML staat en een niet-aangevinkt vakje maakt niet automatisch een waarde no.

Vraag 6 van 10

Twee keuzerondjes bieden “Online” en “Op locatie”, maar beide blijven aangevinkt. Hun namen zijn online en onsite. Hoe moet de groepering veranderen?
  1. Geef beide één gedeelde naam en verschillende waarden.
  2. Geef beide één gedeelde id en verschillende namen.
  3. Geef beide required en behoud verschillende namen.
  4. Geef beide één gedeelde waarde en verschillende namen.
Toon antwoordVerberg antwoord
Antwoord: A
Keuzerondjes horen bij één keuzegroep door een gedeelde naam. Geef ze dezelfde naam, zoals attendance, en verschillende waarden die de twee vormen aanduiden. Required bepaalt of een groep een selectie nodig heeft; het voegt keuzerondjes met verschillende namen niet samen tot één groep.

Vraag 7 van 10

Een stadveld biedt gebruikelijke suggesties maar moet andere getypte steden accepteren. Welke combinatie van bedieningselementen past?
  1. Een select met de gebruikelijke steden als opties.
  2. Een groep keuzerondjes met de gebruikelijke steden.
  3. Een invoerveld gekoppeld aan een datalist met suggesties.
  4. Een tekstveld met een patroon beperkt tot de voorgestelde steden.
Toon antwoordVerberg antwoord
Antwoord: C
Een datalist stelt waarden voor aan een gekoppeld tekstinvoerveld zonder de invoer tot de suggesties te beperken. Dat past bij een open vraag naar een stad met enkele veelvoorkomende antwoorden. Een select zou de gewone keuzes tot de opties beperken, dus als je de datalist door een select vervangt, verandert wat bezoekers kunnen invoeren.

Vraag 8 van 10

Een optioneel tekstveld heeft minlength="5". Wat gebeurt er bij de lengtecontrole als de gebruiker het leeg laat?
  1. De controle faalt omdat nul kleiner is dan vijf.
  2. De controle faalt omdat minlength required inhoudt.
  3. De controle meet in plaats daarvan de plaatsaanduiding.
  4. De controle slaagt omdat het veld leeg is.
Toon antwoordVerberg antwoord
Antwoord: D
De minimumlengte wijst een leeg optioneel veld niet af, dus deze lengtecontrole slaagt. Zodra de gebruiker tekst invoert, moet de opgegeven waarde aan het minimum voldoen. Required is een afzonderlijke aanwezigheidsregel; voeg die toe als weglaten ook moet worden geblokkeerd, in plaats van te verwachten dat minlength een antwoord verplicht maakt.

Vraag 9 van 10

Een documentformulier gebruikt GET met een bestandsinvoerveld met naam en standaardcodering. Een hulpknop verzendt ook het formulier. Welk paar wijzigingen maakt een normale upload van bestandsinhoud mogelijk en zorgt dat de hulpknop niet verzendt?
  1. Gebruik POST met meerdelige codering; geef de hulpknop type button.
  2. Gebruik POST met standaardcodering; geef de hulpknop type reset.
  3. Behoud GET met meerdelige codering; geef de hulpknop type button.
  4. Gebruik POST met meerdelige codering; verwijder het type van de hulpknop.
Toon antwoordVerberg antwoord
Antwoord: A
Een upload van bestandsinhoud heeft POST en enctype="multipart/form-data" nodig, terwijl een hulpknop die niet verzendt type="button" nodig heeft. Dit herstelt afzonderlijke gedragingen. POST met de standaardcodering verstuurt de bestandsinhoud nog steeds niet en als het type van de hulpknop ontbreekt, behoudt die binnen een formulier het normale verzendgedrag.

Vraag 10 van 10

Een tekstinvoerveld bevat required="false" minlength="3". De maker wil het optioneel maken, waarbij elk ingevoerd antwoord minstens drie tekens lang moet zijn. Wat moet veranderen?
  1. Verwijder minlength maar behoud required="false".
  2. Vervang required door required="optional".
  3. Verwijder required en behoud minlength="3".
  4. Vervang minlength door maxlength="3".
Toon antwoordVerberg antwoord
Antwoord: C
Verwijder required volledig en behoud de minimumlengte. Required is booleaans: de aanwezigheid schakelt de instelling in, ook wanneer de waarde “false” zegt. Als je minlength behoudt, is weglaten toegestaan terwijl een opgegeven antwoord dat te kort is nog steeds wordt afgewezen; maxlength zou een andere regel afdwingen.
Set 2: Controleer bereiken, patronen en tabelstructuur10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Welke eenheid gebruikt step="300" op een invoerveld van het type time?
  1. Dagen
  2. Minuten
  3. Milliseconden
  4. Seconden
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een getalveld heeft min="2" max="14" step="4". Welke ingevoerde waarde voldoet aan al deze beperkingen?
  1. 4
  2. 8
  3. 10
  4. 14,5
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een tijdveld heeft min="08:20" max="10:20" step="1200". Hoeveel niet-lege tijdwaarden voldoen aan deze instellingen?
  1. 7
  2. 6
  3. 8
  4. 9
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een verplichte code gebruikt pattern="[A-Z]{2}-[0-9]{3}". Welke ingevoerde code wordt geaccepteerd?
  1. “PZ-7314”
  2. “PZ-731”
  3. “PZ-73”
  4. “PZ731”
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een e-mailveld is verplicht en heeft een ongeldig patroon "[". Een gebruiker voert “ravi” in. Wat gebeurt er bij normale verzending?
  1. De waarde wordt verstuurd omdat het patroon wordt genegeerd.
  2. De waarde wordt verstuurd omdat aan required is voldaan.
  3. De verzending wordt alleen geblokkeerd door het ongeldige patroon.
  4. De verzending wordt geblokkeerd omdat de e-mailsyntaxiscontrole faalt.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een tabelrij vermeldt de temperatuur en luchtvochtigheid van één sensor. Welk element moet die sensor aan het begin van de rij benoemen?
  1. <td scope="row">
  2. <th scope="row">
  3. <th scope="col">
  4. <caption scope="row">
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een meettabel heeft de koppen “Monster”, “Massa (kg)” en “Tijd (min)”. Een gegevensrij is <tr><th scope="row">B</th><td>18</td></tr> en moet een niet-beschikbare massa en een tijd van 18 minuten tonen. Hoe moet de rij worden hersteld?
  1. Zet 18 in de eerste cel en verwijder de rijkop.
  2. Voeg colspan="2" toe aan de cel met 18.
  3. Voeg vóór de cel met 18 een massacel met “niet beschikbaar” in.
  4. Vervang de tijdkop door een lege gegevenscel.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een tabel met vier kolommen heeft de koppen “Tijd”, “A”, “B” en “C”. In één rij loopt een cel in A door in de volgende rij. Die volgende rij heeft een tijdkop en een gezamenlijk gegeven voor B en C nodig. Welke nieuwe cellen moet die bevatten?
  1. Een tijd-th en één td met colspan="2".
  2. Een tijd-th en één td met colspan="3".
  3. Een tijd-th en twee td-cellen, elk met colspan="2".
  4. Een tijd-th, een lege td en een td met colspan="2".
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een geluidloze herhalende video heeft controls en muted="false". De maker wil de oorspronkelijke instelling voor gedempt geluid uitschakelen. Welke wijziging doet dat?
  1. Voeg autoplay="false" toe aan de video.
  2. Verwijder controls van de video.
  3. Stel muted="off" in op de video.
  4. Verwijder muted van de video.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een MP3-bestand wordt als audiobron aangeboden. Welk MIME-type moet de bron declareren?
  1. audio/mp3
  2. audio/mpeg
  3. video/mpeg
  4. audio/ogg
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 3: Maak media en ingesloten pagina's bruikbaar10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Welk attribuut maakt de eigen afspeelbediening van de browser zichtbaar op een audio-element?
  1. controls
  2. poster
  3. preload
  4. playsinline
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een video vermeldt onderliggende bronnen voor eerst WebM en dan MP4, maar heeft ook een eigen src="preview.mp4". Waarom bepaalt de volgorde van de onderliggende bronnen niet wat wordt afgespeeld?
  1. MP4-bestanden hebben altijd voorrang op WebM in huidige browsers.
  2. De onderliggende bronnen hebben een gedeelde naam nodig voor een lijst.
  3. De src van het bovenliggende element heeft voorrang op de bronnen.
  4. De eerste bron moet het bestandspad van het bovenliggende element herhalen.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een ondertitel wordt getoond van 00:00:12.250 tot 00:00:16.000. Hoelang is dat tekstsegment zichtbaar?
  1. 4,25 seconden
  2. 3,75 seconden
  3. 3,25 seconden
  4. 4,75 seconden
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een video vermeldt onderliggende bronbestanden en een spoor van een andere oorsprong. De video heeft ook src="old.mp4". Het spoor bevat geldige WebVTT-tekst, maar de server geeft geen toestemming voor toegang vanaf een andere oorsprong en de video heeft geen crossorigin-instelling. Welke volledige reparatie maakt de bedoelde bronselectie en het spoor van een andere oorsprong mogelijk?
  1. Behoud de bovenliggende src; schakel crossorigin en servertoestemming in.
  2. Behoud de bovenliggende src; zet het spoor vóór de onderliggende bronnen.
  3. Verwijder de bovenliggende src; voeg default toe zonder serverwijzigingen.
  4. Verwijder de bovenliggende src; schakel crossorigin en servertoestemming in.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een browser ondersteunt video maar kan het aangeboden bestand niet afspelen. De video heeft een eigen src die naar dat bestand verwijst, plus een onderliggende bron die de browser kan afspelen. De enige downloadlink staat binnen de video. Welke wijzigingen in de opmaakcode maken dat alternatief en een betrouwbare zichtbare terugvalmogelijkheid beschikbaar?
  1. Verwijder de bovenliggende src; zet een downloadlink buiten de video.
  2. Behoud de bovenliggende src; zet de downloadlink buiten de video.
  3. Verwijder de bovenliggende src; laat de downloadlink alleen binnen de video.
  4. Behoud de bovenliggende src; zet de onderliggende bron na de binnenste link.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een iframe bevat een kaart van een evenementenlocatie. Welke titel geeft het doel het best aan voor een schermlezergebruiker?
  1. “Ingesloten inhoud”
  2. “Kaart van de evenementenlocatie”
  3. “Frame 1 op deze pagina”
  4. “Kaart van 600 bij 400 pixels”
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een ingesloten quiz moet scripts uitvoeren en het formulier verzenden terwijl pop-ups geblokkeerd blijven. Welke sandboxwaarde past bij die behoeften?
  1. allow-forms allow-popups
  2. allow-scripts allow-popups
  3. allow-scripts allow-forms
  4. allow-same-origin allow-forms
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een voorbeeldframe van dezelfde oorsprong voert niet-vertrouwde HTML uit. Het heeft sandbox="allow-scripts allow-same-origin", allow="camera" en referrerpolicy="no-referrer". Het voorbeeld heeft scripts nodig maar geen camera. Welke wijzigingen in machtigingen herstellen bruikbare isolatie terwijl scripts kunnen blijven werken?
  1. Verwijder camera; behoud beide sandbox-tokens en no-referrer.
  2. Verwijder allow-scripts; behoud camera en allow-same-origin.
  3. Verwijder no-referrer; behoud camera en beide sandbox-tokens.
  4. Verwijder camera en allow-same-origin; behoud allow-scripts.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een textarea heeft rows="4" cols="35" en geen lengteattributen. Waarom kan een bezoeker meer dan 140 tekens typen?
  1. Rows en cols bepalen de zichtbare grootte, niet de invoerlengte.
  2. Tekstgebieden negeren altijd elke mogelijke lengteregel.
  3. Cols telt woorden terwijl rows alinea's telt.
  4. De methode van het formulier verhoogt de tekstinvoerlimiet.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een veldengroep voor bezorging heeft een groepsbijschrift, maar de keuzerondjes hebben verschillende namen en geen labels. Een afzonderlijk e-mailveld heeft een id en plaatsaanduiding maar geen name. De pagina moet één bezorgkeuze toestaan, elk bedieningselement identificeren en het e-mailadres versturen. Welke reparatie voorziet in alle drie?
  1. Deel radionamen; label rondjes en e-mail; laat e-mail zonder name.
  2. Deel radio-id's; label rondjes en e-mail; voeg een e-mailname toe.
  3. Deel radionamen; behoud alleen de legend; voeg een e-mailname toe.
  4. Deel radionamen; label rondjes en e-mail; voeg een e-mailname toe.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 4: Debug gecombineerde HTML-problemen10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een kaart ver onder de hoofdinhoud hoeft pas te laden wanneer de bezoeker in de buurt komt. Welke iframe-instelling vraagt om dat gedrag?
  1. loading="eager"
  2. preload="none"
  3. sandbox="lazy"
  4. loading="lazy"
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een getalinvoerveld heeft value="0.25", geen min en geen step-attribuut. De gebruiker vervangt de waarde. Welke invoer voldoet aan de standaardstapregel?
  1. 1,00
  2. 1,25
  3. 1,50
  4. 2,00
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een verplichte tekstcode moet voldoen aan [A-Z]{2}[0-9]{2}. Normale validatie is ingeschakeld voor het formulier. De verzendknop “Concept opslaan” heeft formnovalidate, terwijl “Verzenden” dat niet heeft. De code is “xy8”. Wat gebeurt er bij elke knop?
  1. Beide knoppen blokkeren verzending totdat de code voldoet.
  2. Verzenden verstuurt; Concept opslaan blokkeert de patroonafwijking.
  3. Concept opslaan verstuurt; Verzenden blokkeert de patroonafwijking.
  4. Beide knoppen versturen omdat de code niet leeg is.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een tabel met drie kolommen heeft een kopcel in de eerste kolom die twee rijen beslaat. In de tweede rij beslaat een td de resterende twee kolommen. De td moet verwijzen naar kopcellen met de id's r, planned en actual. Welke opmaakcode past bij de tweede rij?
  1. <tr><td colspan="2" headers="r planned actual">12</td></tr>
  2. <tr><td></td><td colspan="2" headers="r planned actual">12</td></tr>
  3. <tr><td colspan="3" headers="r planned actual">12</td></tr>
  4. <tr><td colspan="2" headers="r,planned,actual">12</td></tr>
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een POST-formulier heeft een invoerveld met name="member" value="K8" readonly, een leeg tekstveld met de naam note en een niet-aangevinkt selectievakje met de naam copy. Het verzoek gebruikt HTTPS. Welk gegevensgedrag moet het ontvangende programma verwachten?
  1. Alleen member komt aan; HTTPS verwijdert lege velden.
  2. Member, note en copy komen aan met hun weergegeven waarden.
  3. Alleen note komt aan; alleen-lezenwaarden worden weggelaten.
  4. Member en een lege note komen aan; copy wordt weggelaten.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een tekstspoor van een video moet zowel gesproken instructies als een belangrijk alarmgeluid overbrengen. Welk spoortype geeft dat doel aan?
  1. captions
  2. subtitles
  3. chapters
  4. metadata
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een speler van een derde partij gebruikt no-referrer en uitgesteld laden onder het eerste scherm van de pagina. Een bezoeker scrolt ernaartoe maar drukt nooit op afspelen. Wat gebeurt er wanneer het iframe laadt?
  1. De aanbieder ontvangt het volledige paginapad maar geen netwerkadres.
  2. Er wordt geen verzoek gedaan omdat de bezoeker niet op afspelen drukte.
  3. Er wordt contact opgenomen met de aanbieder zonder het verwijzende pagina-adres.
  4. Er wordt geen verzoek gedaan omdat no-referrer alle contact blokkeert.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een optioneel bijnaamveld heeft minlength="4". Een gebruiker typt drie gewone spaties. Voldoet dit aan de lengteregel, en waarom?
  1. Ja; optionele velden slaan elke tekstlengtebeperking over.
  2. Nee; de opgegeven waarde heeft minder dan vier tekens.
  3. Nee; spaties worden altijd vóór de lengtecontrole verwijderd.
  4. Ja; spaties voldoen aan het minimum voor elk optioneel veld.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een tabelkop zegt “Lengte (m)” en een gegevenscel daaronder bevat 2.4. Welke eenheid hoort bij die waarde?
  1. Centimeter
  2. Millimeter
  3. Kilometer
  4. Meter
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een video heeft src="outdated.mov" plus onderliggende bronnen voor niet-ondersteunde WebM en ondersteunde MP4/H.264/AAC, in die volgorde. De enige downloadlink staat binnen de speler. Welke wijzigingen laten deze browser het afspeelbare onderliggende bestand kiezen en houden een terugvalmogelijkheid zichtbaar als afspelen toch mislukt?
  1. Behoud de bovenliggende src, geef WebM voorrang en zet de link buiten.
  2. Verwijder de bovenliggende src en zet de downloadlink buiten.
  3. Verwijder de bovenliggende src maar laat de link alleen binnen video.
  4. Behoud de bovenliggende src en vervang brontypen door video/mp4.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Kom je niet uit je eigen opgave? Huiswerkhulp

Kernbegrippen

79 Kernbegrippen, elk met een definitie

A

action-attribuut
Het action-attribuut geeft de URL op waarnaar een formulier zijn gegevens verstuurt; als het ontbreekt, gebruikt het formulier de URL van de huidige pagina.
Met action="/messages" gaat een bericht naar het adres van de website dat berichten ontvangt.
afwijking van de stapgrootte
Een afwijking van de stapgrootte ontstaat wanneer een ingevoerde waarde niet op een geheel aantal toegestane stappen vanaf de geldende basis ligt.
Een massa van 2,25 kg voldoet niet aan een stap van een halve kilogram vanaf 0,5, ook als die binnen het toegestane bereik van het veld ligt.
audiodescriptie
Audiodescriptie beschrijft belangrijke visuele details die iemand nodig heeft om een video te begrijpen zonder de beelden te zien.
Een beschrijving kan een stille demonstratie op het scherm uitleggen die in de gewone dialoog niet wordt genoemd.
automatisch aanvullen
Het attribuut voor automatisch aanvullen, autocomplete, beschrijft het doel van een veld, zodat de browser passende opgeslagen informatie voor de invoer kan aanbieden.
Een telefoonveld gebruikt autocomplete="tel" zodat de browser het opgeslagen telefoonnummer van de gebruiker kan voorstellen.
automatisch afspelen
Automatisch afspelen vraagt om afspelen zonder druk op een afspeelknop, maar browsers kunnen dit blokkeren afhankelijk van geluid, interactie en machtigingsinstellingen.
Een gedempte achtergrondvideo die binnen de pagina wordt afgespeeld, heeft meer kans om automatisch te starten dan een video die met geluid begint.

B

beeldverhouding
Een beeldverhouding is de verhouding tussen de breedte en hoogte van een afbeelding of video, die wordt gebruikt om de vorm te behouden als de grootte verandert.
Een video van 1920 × 1080 heeft een verhouding van 16:9, dus een bijpassende speler van 640 pixels breed is 360 pixels hoog.
booleaans attribuut
Een booleaans attribuut schakelt een HTML-instelling in door aanwezig te zijn; de geschreven waarde schakelt de instelling niet in of uit.
Een invoerveld met required="false" is nog steeds verplicht, dus het attribuut moet worden verwijderd om het optioneel te maken.

C

clickjacking
Clickjacking verleidt een gebruiker om op een verborgen of misleidende ingesloten interface te klikken. Inbeddingsbeperkingen helpen websites dit te voorkomen.
Een website kan inbedding weigeren zodat de knoppen niet verborgen kunnen worden onder een misleidende interface op een andere pagina.
codec
Een codec codeert of decodeert een mediastroom; een browser moet de daadwerkelijke video- en audiocodecs binnen een container ondersteunen.
Een MP4 kan H.264-video met AAC-audio combineren en beide stromen hebben passende ondersteuning voor afspelen nodig.

D

dialoogondertiteling
Dialoogondertiteling schrijft of vertaalt dialoog om kijkers te helpen gesproken taal te begrijpen terwijl de audio zelf voor hen beschikbaar is.
Een kijker die de oorspronkelijke dialoog hoort, kan vertaalde ondertiteling gebruiken om de betekenis te volgen.

F

formulier
Een formulier is een groep bedieningselementen die samenhangende invoer verzamelt en de resulterende gegevens als verzoek naar een ontvangende URL verstuurt.
Een contactformulier verstuurt het bericht en e-mailadres van een bezoeker samen wanneer de bezoeker op “Verzenden” drukt.
functiemachtiging
Een functiemachtiging geeft een ingesloten document via allow toegang tot een browserfunctie, afhankelijk van ander browserbeleid en keuzes van de gebruiker.
Een speler krijgt toestemming voor volledig scherm zonder onnodige toestemming om de camera van de bezoeker te gebruiken.

G

gegevenscel
Een gegevenscel is een td-element met een tabelwaarde die betekenis krijgt door de kopcellen die bij de rij en kolom horen.
In een tabel met een rij “Woensdag” en een kolom “Afstand (km)” wordt de waarde 7,5 gelezen als de afstand van woensdag in kilometers.
gegevenstabel
Een gegevenstabel ordent samenhangende waarden in rijen en kolommen, zodat elke waarde betekenis krijgt door beide dimensies van het raster.
Een hardlooplogboek vergelijkt afstanden en tijden voor verschillende dagen met één rij per dag en benoemde kolommen.
gemengde inhoud
Gemengde inhoud combineert een HTTPS-pagina met bronnen die via HTTP worden opgevraagd; een HTTP-iframe wordt geblokkeerd omdat het actieve onveilige inhoud is.
Een HTTPS-locatiepagina die een kaart insluit, moet het HTTPS-inbedadres van de kaart gebruiken om een geblokkeerd onveilig frame te voorkomen.
GET
GET is een verzoekmethode die verzonden formuliergegevens in de querystring van de URL zet en geschikt is voor het lezen of zoeken van informatie.
Een zoekopdracht in een catalogus kan de zoektermen in de URL bewaren, zodat het adres van de resultaten als bladwijzer kan worden opgeslagen.
getimed tekstsegment
Een getimed tekstsegment is één tekstitem in een WebVTT-spoor met een begintijd, een latere eindtijd en tekst die tijdens dat interval wordt getoond.
Het interval 00:00:01.000 --> 00:00:04.500 toont een tekstsegment gedurende drieënhalve seconde.
groep keuzerondjes
Een groep keuzerondjes is een verzameling keuzerondjes met dezelfde naam, zodat bij het kiezen van één optie een eerdere selectie in die groep vervalt.
Drie bezorgsnelheden gebruiken allemaal name="speed" en verschillende waarden om één selectie mogelijk te maken.
groepsbijschrift
Een groepsbijschrift is het eerste kindelement van een veldengroep dat de groep benoemt en de samenhangende bedieningselementen een gezamenlijke vraag of context geeft.
Het groepsbijschrift “Contactvoorkeuren” verklaart waarom verschillende afzonderlijk gelabelde selectievakjes voor communicatie samen staan.

H

headers-attribuut
Het headers-attribuut koppelt een gegevenscel aan specifieke kopcellen via een door spaties gescheiden lijst met hun unieke ID's.
Een cel met headers="mon distance planned" verwijst naar drie koppen die samen de waarde verklaren.

I

inbeddingsbeperking
Een inbeddingsbeperking is een antwoordregel van een aanbieder die browsers vertelt waar, of dat, de pagina van de aanbieder binnen andere pagina's mag verschijnen.
Een geblokkeerd frame heeft een goedgekeurd inbedadres of een directe link nodig; de titel veranderen kan de regel niet opheffen.
ingebouwde afspeelbediening
Ingebouwde afspeelbediening is de eigen afspeelinterface van de browser, ingeschakeld met controls zodat bezoekers media kunnen starten, pauzeren, doorzoeken en het volume kunnen aanpassen.
Een audio-element wordt een zichtbare, bruikbare speler wanneer de pagina het attribuut controls toevoegt.
inlineframe
Een inlineframe is een iframe-element dat een afzonderlijk webdocument met eigen stijlen en scripts binnen de huidige pagina toont.
Een locatiepagina sluit de pagina van een kaartendienst in en houdt de kaart binnen een bepaald rechthoekig gebied.
inlineframedocument
Een inlineframedocument dat met srcdoc wordt geleverd, is HTML die rechtstreeks in het iframe-attribuut is geschreven en voorrang heeft op een src-URL.
Een berichtvoorbeeld in een sandbox gebruikt srcdoc="<p>Preview of your message</p>" zonder een afzonderlijke HTML-pagina op te halen.
invoermodus
Een invoermodus is een aanwijzing voor de indeling van een schermtoetsenbord; die valideert de tekst niet en beperkt niet welke tekens een gebruiker kan invoeren.
Een tekstveld voor een lidmaatschapscode gebruikt inputmode="numeric" om cijferinvoer op een telefoon gemakkelijker te maken.
invoertype
Een invoertype is de instelling die het invoergedrag van een bedieningselement kiest, zoals een e-mailveld, een datumkiezer of een selectievakje.
Voor een aankomstdatum biedt type="date" een kiezer in plaats van een onbeperkt tekstveld met één regel.

K

keuzelijst
Een keuzelijst is een bedieningselement dat een vaste verzameling opties aanbiedt en de waarde van de geselecteerde optie of opties verstuurt.
Een bezorgmenu toont “Express (volgende dag)” terwijl het de kortere optiewaarde express verstuurt.
kolomgroep
Een kolomgroep beschrijft samenhangende tabelkolommen met colgroup en biedt structuur voor groepskoppen en bepaalde kolomstijlen.
De kolommen “Gepland” en “Werkelijk” delen een gedefinieerde kolomgroep onder de kop “Afstand (km)”.
kolomoverspanning
Een kolomoverspanning laat één tabelcel via het colspan-attribuut meerdere horizontale rasterposities bezetten en vervangt daarmee aangrenzende cellen.
In een rooster met twee dagkolommen beslaat een lunchgegeven met colspan="2" beide kolommen naast de afzonderlijke tijdkop van de rij.
kopcel
Een kopcel is een th-element dat een rij of kolom benoemt en een relatie met de bijbehorende gegevenscellen van de tabel uitdrukt.
De kop “Afstand (km)” geeft de grootheid en eenheid aan die alle metingen eronder delen.
kwantor
Een kwantor geeft aan hoe vaak het voorafgaande patroononderdeel mag worden herhaald, bijvoorbeeld precies vier keer of twee tot vijf keer.
In [0-9]{4} vereist de kwantor vier cijfers, zodat drie cijfers de verwachte code niet voltooien.

L

label
Een label is tekst die aan een formulieronderdeel is gekoppeld, de toegankelijke naam ervan levert en de tekst tot een klikdoel voor dat bedieningselement maakt.
Als je op “E-mailadres” klikt, krijgt het veld focus waarvan de id overeenkomt met het for-attribuut van het label.
lokale datum en tijd
Een lokale datum en tijd is een kalenderdatum gecombineerd met een kloktijd zonder tijdzone, zoals verzameld door datetime-local.
Een afspraakveld kan 2026-07-09T10:30 versturen; de locatie moet eventuele benodigde tijdzonecontext bieden.

M

maximum
Een maximum is een inbegrepen bovengrens ingesteld met max die een numerieke waarde of datum- of tijdwaarde niet mag overschrijden om door validatie te komen.
Een datumveld met max="2026-08-31" staat 31 augustus toe maar wijst een later ingevoerde datum af.
maximumlengte
Een maximumlengte is de bovengrens voor tekstinvoer die door maxlength wordt ingesteld; browsers stoppen normaal gesproken met gewoon typen wanneer deze grens is bereikt.
Een gebruikersnaamveld met maxlength="12" accepteert tijdens het typen geen dertiende gewoon Latijns teken.
mediacontainer
Een mediacontainer is de bestandsstructuur die mediastromen en bijbehorende informatie bevat en die vaak wordt herkend aan extensies zoals .mp4 of .webm.
Twee MP4-bestanden kunnen verschillende gecodeerde stromen bevatten, dus de extensie alleen garandeert niet dat ze kunnen worden afgespeeld.
meerdelige formuliergegevens
Meerdelige formuliergegevens zijn een formuliercodering die afzonderlijke delen, waaronder bestandsinhoud, in een POST-verzending meeneemt.
Een uploadformulier stelt enctype="multipart/form-data" in zodat de bytes van het geselecteerde document kunnen worden verstuurd.
meetindicator
Een meetindicator toont een meting binnen een bekend bereik, zoals gebruikte opslagruimte, in plaats van de voltooiing van een lopende taak.
Een meetindicator met value="0.6" en het standaardbereik toont een meting op 60% van dat bereik.
MIME-type
Een MIME-type geeft het formaat van een bron aan, zodat een browser kan bepalen of die de bron ondersteunt voordat mediagegevens worden opgehaald.
Een MP3-bron declareert type="audio/mpeg", zodat de browser het bedoelde audioformaat kan herkennen.
minimum
Een minimum is een inbegrepen ondergrens die met min wordt ingesteld voor numerieke invoer of datum- en tijdinvoer en die, als die geldig is, ook de stapbasis levert.
Met min="0.5" step="0.5" mag een pakket 0,5 kg wegen en beginnen de volgende stappen bij die waarde.
minimumlengte
Een minimumlengte is een ondergrens voor ingevoerde tekst die wordt ingesteld met minlength en die een leeg veld nog steeds toestaat tenzij ook required geldt.
Een optionele bijnaam met minlength="4" mag worden weggelaten, maar een opgegeven bijnaam van twee letters wordt afgewezen.

N

naam-waardepaar
Een naam-waardepaar koppelt een verzonden gegevenssleutel uit het name-attribuut van een bedieningselement aan de waarde die dat element meestuurt.
Een geselecteerde optie kan delivery=express opleveren, ook als het zichtbare label “Expressbezorging” is.

O

omzeiling van validatie
Bij omzeiling van validatie worden de normale verzendcontroles van de browser overgeslagen, met instellingen zoals novalidate of via een verzoek buiten het formulier om.
Een verzendknop “Concept opslaan” kan formnovalidate gebruiken terwijl de gewone knop “Verzenden” blijft controleren.
ondertiteling voor doven en slechthorenden
Ondertiteling voor doven en slechthorenden geeft spraak, de identiteit van sprekers en betekenisvolle geluiden weer als getimede tekst voor mensen die de audio van een opname niet kunnen horen.
Een ondertitel bevat “[deur sluit]”, zodat de informatie van het geluid beschikbaar blijft wanneer de speler is gedempt.
oorsprong
Een oorsprong is de combinatie van het URL-schema, de host en de poort van een webadres, die browserregels gebruiken om grenzen voor documenttoegang te onderscheiden.
Een ingesloten pagina van dezelfde HTTPS-host en poort kan een oorsprong delen met het omringende document.
optiegroep
Een optiegroep is een optgroup-element dat samenhangende select-opties onder een benoemde kop plaatst die zelf niet kan worden geselecteerd.
De kop “Warme dranken” groepeert thee en koffie zonder zelf een bestelbare drank in het menu te worden.

P

pattern-attribuut
Een pattern-attribuut is een invoerattribuut met een reguliere expressie waaraan de volledige niet-lege waarde moet voldoen om door de formaatcontrole te komen.
Een organisatie kan een productcode zoals “ABC-1234” vereisen met een eigen vast patroon van letters en cijfers.
POST
POST is een verzoekmethode die verzonden formuliergegevens in de berichtinhoud van het verzoek plaatst en geschikt is voor het versturen van berichten of het wijzigen van gegevens.
Een aanmeldformulier gebruikt POST, terwijl HTTPS de verbinding beschermt waarover de persoonsgegevens gaan.
posterafbeelding
Een posterafbeelding is een afzonderlijke stilstaande afbeelding die een video-element vóór het afspelen toont en die via het poster-attribuut wordt gekozen.
Een workshopvideo toont de inleidende afbeelding terwijl die wacht totdat de bezoeker op afspelen drukt.

R

reguliere expressie
Een reguliere expressie is een compacte notatie die tekstpatronen beschrijft met tekengroepen, herhalingsregels en andere operatoren.
De expressie [A-Z]{3} accepteert precies drie standaardhoofdletters uit het Latijnse alfabet wanneer die als patroon voor de volledige waarde wordt gebruikt.
required-attribuut
Het required-attribuut is een booleaans attribuut dat een ondersteund bedieningselement een waarde of selectie laat vereisen om door validatie te komen.
Het selectievakje met het label “Ik ga akkoord met de voorwaarden” moet zijn aangevinkt wanneer dat vakje required heeft.
rijgroep
Een rijgroep verzamelt tabelrijen op basis van hun rol met thead, tbody of tfoot en scheidt zo koppen, hoofdgegevens en samenvattingen.
In een hardlooplogboek staan de totale afstand en totale tijd in een voetrij binnen tfoot na de gegevensrijen.
rijoverspanning
Een rijoverspanning laat een tabelcel dezelfde kolom over meerdere rijen bezetten, zodat bezette posities in latere rijen geen nieuwe cel nodig hebben.
Een sessie op maandag met rowspan="2" laat de positie voor maandag in de volgende rij al bezet.

S

sandbox
Een sandbox past beperkingen toe op het document van een iframe, waarbij specifieke tokens geselecteerde mogelijkheden zoals scripts of formulierverzending herstellen.
Een ingesloten quiz staat scripts en formulieren toe terwijl de sandboxbeperking die pop-ups blokkeert behouden blijft.
schuifregelaar
Een schuifregelaar is een invoerelement om een numerieke instelling binnen grenzen te kiezen, dat naar de stappen springt die door step zijn bepaald.
Een volumeschuifregelaar kan min="0" max="10" gebruiken wanneer een instelling bij benadering nuttiger is dan exacte invoer.
selectievakje
Een selectievakje is een onafhankelijk bedieningselement dat aan- of uitgevinkt kan zijn en waarvan de waarde alleen wordt verzonden als het is aangevinkt.
Een bezoeker kan zowel “E-mailupdates” als “Herinneringen voor evenementen” aanvinken omdat de keuzes onafhankelijk zijn.
source-element
Een source-element biedt een alternatief mediabestand binnen een speler, zodat de browser op volgorde de eerste afspeelbare bron kan kiezen.
Een video vermeldt een WebM-bron vóór MP4, zodat WebM de voorkeur krijgt wanneer de browser die kan afspelen.
stapbasis
Een stapbasis is het beginpunt voor stappen, genomen uit min, anders uit een geldige HTML-waarde en anders uit de standaardbasis van het invoertype.
Een getalveld met min="1" step="2" staat 1, 3 en 5 toe, zodat een invoer van 4 binnen het bereik wordt afgewezen.
stapgrootte
Een stapgrootte is een toegestane toename vanaf de stapbasis van een veld die beperkt welke waarden binnen de grenzen door validatie komen.
Een tijdveld met step="900" gebruikt stappen van 15 minuten omdat tijdstappen in seconden worden gemeten.
suggestielijst
Een suggestielijst biedt voorgestelde waarden aan een gekoppeld invoerveld, terwijl de gebruiker vrij blijft een antwoord buiten die suggesties te typen.
Een stadveld stelt “Osaka” en “Nairobi” voor maar accepteert nog steeds een andere stad die de bezoeker invoert.

T

tabelbijschrift
Een tabelbijschrift is de eigen titel van een tabel, als eerste binnen de tabel geplaatst zodat lezers het onderwerp kunnen herkennen voordat ze afzonderlijke cellen lezen.
Het tabelbijschrift “Hardlooplogboek, week 12” onderscheidt de metingen van die week van een andere tabel op de pagina.
tekstgebied
Een tekstgebied is een tekstbedieningselement voor meerdere regels waarvan de beginwaarde tussen de openings- en sluittag van textarea staat.
Een berichtenveld stelt rows="5" in voor de zichtbare hoogte, terwijl maxlength de ingevoerde tekst afzonderlijk beperkt.
tekstspoor
Een tekstspoor is getimede informatie die via track aan media wordt gekoppeld, met een type zoals ondertiteling, hoofdstukken of metadata.
Een ondertitelspoor geeft de taal en een menulabel op, zodat kijkers de tekst kunnen herkennen en inschakelen.
terugvalinhoud
Terugvalinhoud binnen een media-element wordt getoond door browsers die dat element niet ondersteunen, niet als algemene melding bij elke afspeelfout.
Een downloadlink buiten de speler blijft beschikbaar, ook wanneer een moderne browser de bronnen niet kan afspelen.
terugvalinhoud van een object-element
Terugvalinhoud van een object-element is inhoud binnen een object-element die een alternatief biedt wanneer de externe bron niet kan worden weergegeven.
Een ingesloten pdf-object kan een downloadlink bevatten zodat lezers het document toch kunnen verkrijgen.
toegankelijke naam
Een toegankelijke naam identificeert een bedieningselement of frame voor hulptechnologie, zodat het doel kan worden aangekondigd wanneer een gebruiker het bereikt.
Het label “Telefoonnummer (optioneel)” vertelt een schermlezergebruiker zowel welke gegevens worden gevraagd als dat die optioneel zijn.
toelichting via aria-describedby
Een toelichting via aria-describedby is verklarende tekst die via aria-describedby aan een bedieningselement is gekoppeld en naast het label een beschrijving toevoegt.
Een wachtwoordtoelichting met een eigen id legt vóór verzending van het formulier uit: “Gebruik minimaal 8 tekens”.
toepassingsbereik van een kopcel
Het toepassingsbereik van een kopcel geeft de richting of groep aan waarvoor een tabelkop geldt, zoals over een rij of door een kolom.
In een tabel met dagelijkse afstanden gebruikt elke dagnaam scope="row", terwijl de afstandskop scope="col" gebruikt voor de waarden eronder.
transcript
Een transcript is een leesbare tekstversie van spraak en betekenisvolle geluiden, aangeboden op de pagina of via een duidelijk benoemde link in de buurt.
Een podcastpagina zet “Lees het transcript van de aflevering” direct onder de audiospeler, zodat het gemakkelijk te bereiken is.

U

uitgesteld laden
Uitgesteld laden stelt een iframeverzoek uit totdat het frame bijna in de viewport is, waardoor minder werk nodig is voor de eerste weergave van de pagina.
Een kaart ver onder de inleiding gebruikt loading="lazy", terwijl de hoofdinhoud bovenaan de pagina snel laadt.

V

validatie op de server
Validatie op de server controleert ontvangen gegevens in het serverprogramma omdat bedieningselementen en controles van een browser kunnen worden veranderd of omzeild.
Een server wijst een verkeerd opgebouwde productcode af, ook als iemand het patroon van het veld in ontwikkelaarstools heeft verwijderd.
validatie van invoerbeperkingen
Validatie van invoerbeperkingen is de controle door de browser van formulierwaarden aan de hand van invoertypen en attributen vóór een normale verzending.
Als je een formulier met een leeg verplicht e-mailveld verzendt, krijgt dat veld focus en toont de browser een melding.
validatiestatus
Een validatiestatus beschrijft of een bedieningselement momenteel aan de beperkingen voldoet; CSS kan dit met selectors voor geldig of ongeldig weergeven.
De selector :user-invalid kan foutopmaak uitstellen totdat de gebruiker met het bedieningselement heeft gewerkt.
veldengroep
Een veldengroep groepeert samenhangende formulieronderdelen, zodat een gezamenlijk groepsbijschrift de groep kan benoemen terwijl afzonderlijke bedieningselementen hun labels behouden.
Een veldengroep plaatst drie keuzerondjes voor bezorging samen onder de gezamenlijke vraag “Bezorgsnelheid”.
verkorte koptekst
Een verkorte koptekst is een kortere formulering die door abbr op een kopcel wordt gegeven en die sommige schermlezers gebruiken wanneer ze die kop herhalen.
De lange kop “Distance covered in kilometers” kan abbr="Distance" bieden voor een kortere herhaling.
verwijzingsbeleid
Een verwijzingsbeleid bepaalt hoeveel van het adres van de verwijzende pagina met een verzoek wordt verstuurd; no-referrer laat dat adres volledig weg.
Een frame met referrerpolicy="no-referrer" neemt nog steeds contact op met de aanbieder maar verstuurt geen adres van de verwijzende pagina.
vooraf laden
Vooraf laden is een aanwijzing voor het ophalen van media vóór het afspelen, waarbij geen gegevens, basismetadata of mogelijk het volledige bestand worden opgevraagd.
Een lange video gebruikt preload="none" om de media niet vooraf op te vragen wanneer veel bezoekers de video mogelijk overslaan.
voortgangsindicator
Een voortgangsindicator toont hoeveel van een taak is voltooid, met een progress-element en de huidige waarde en het maximum daarvan.
Een taak op 70 van de 100 kan een voortgangsbalk tonen terwijl de tekst ernaast de taak benoemt.

W

WebVTT
WebVTT is een UTF-8-tekstspoorformaat dat begint met WEBVTT en getimede tekstsegmenten bevat die door lege regels zijn gescheiden, meestal opgeslagen als .vtt.
Een ondertitelspoor verwijst naar intro.en.vtt, waarvan de tijdsaanduidingen punten vóór de millisecondecijfers gebruiken.

Over deze les

Door StudeliFout melden

Maak je eigen Studiemateriaal

Maak van je aantekeningen, slides en documenten Leermodules, Oefenvragen, Flashcards en 6 andere tools.

Aan de slag