Direct naar de inhoud

Schakelaar

Eén of twee knoppen waarmee je door de website stapt. Voor wie een toetsenbord niet kan gebruiken.

  • Slepen: wat het criterium vraagt

    Slepen vraagt drie dingen tegelijk: precies raken, ingedrukt houden en tegelijk bewegen. Voor wie beeft, met zijn ogen aanwijst of een schakelaar gebruikt zijn dat drie opgaven achter elkaar. Kan een functie alleen met slepen worden bediend, zorg dan dat die ook met losse klikken of tikken werkt.

    Dit criterium is nieuw in WCAG 2.2 en staat op niveau AA.

    Waar het opduikt:

    • Schuifregelaars voor een prijsbereik of het volume.
    • Lijsten die je herschikt door onderdelen te verslepen.
    • Kaarten die je moet verschuiven om een ander gebied te zien.
    • Een carrousel die alleen met vegen te bedienen is.

    Er is een uitzondering als het slepen de handeling zelf is: een handtekening zetten, tekenen, schilderen. Bij twijfel helpt één vraag: is hetzelfde resultaat met knoppen te bereiken? Bij een schuifregelaar wel, bij een handtekening niet.

    Dit criterium gaat over de aanwijzer, niet over het toetsenbord. Dat laatste is 2.1.1. Ook wie een muis of aanraakscherm gebruikt maar niet kan slepen, moet erlangs kunnen. Beide criteria moeten dus kloppen.

    Open dit onderwerp op een eigen pagina

  • Zichtbare focus: de focusring

    Een site heeft lichte en donkere vlakken. Een focusrand van één kleur valt daardoor altijd op één van de twee weg. Zet daarom een lichte ring binnen een donkere: op een donkere knop valt de lichte op, op een lichte knop de donkere.

    In de code ziet dat er zo uit:

    :where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
      outline: 2px solid transparent;   /* blijft staan in de hoogcontrastmodus */
      outline-offset: 2px;
      box-shadow:
        0 0 0 2px #FFFFFF,              /* binnenring: licht */
        0 0 0 5px #08251C;              /* buitenring: donker */
      border-radius: 6px;
    }

    De doorzichtige outline lijkt overbodig maar is dat niet. In de hoogcontrastmodus van Windows verwijdert het systeem alle kleuren en schaduwen, waardoor de box-shadow verdwijnt. Een outline blijft wel staan en krijgt dan de systeemkleur.

    Gebruik :focus-visible en niet :focus. Met :focus krijgt ook een bezoeker die met de muis klikt een rand om zijn knop. Met :focus-visible bepaalt de browser het zelf: een rand bij het toetsenbord, geen rand bij de muis.

    Drie oplossingen die niet genoeg zijn:

    • Alleen de kleur van de knop veranderen. Kleurverschil alleen is geen zichtbare focus, en voor wie kleur anders ziet werkt het niet.
    • De rand strak om het onderdeel leggen. Met outline-offset blijft er lucht, waardoor de rand ook op een gekleurde knop opvalt.
    • Een rand dunner dan 2 pixels. Op een vergroot scherm valt die weg tegen de rand van het onderdeel zelf.

    Open dit onderwerp op een eigen pagina

  • Overbodige invoer: zo test je het

    Dit is een test met pen en papier. Er is geen software voor nodig, en juist daarom wordt hij zelden gedaan.

    Ga als volgt te werk:

    • Begin bij het begin van een proces met meerdere stappen: een bestelling, een aanvraag, een aanmelding.
    • Schrijf bij elke stap op wélke gegevens er gevraagd worden. Niet wat je invult, maar wat er gevraagd wordt.
    • Loop het lijstje na. Staat er iets twee keer op?

    Staat er iets twee keer, dan is dat een afwijking — tenzij het een wachtwoord is of iets wat echt veranderd kan zijn.

    Waar het meestal zit:

    • Factuuradres en afleveradres.
    • E-mailadres bij het aanmaken van een account en daarna nog eens bij het bestellen.
    • Een naam bovenaan een formulier en nog eens bij de ondertekening.
    • Een klantnummer dat in stap 1 wordt ingevoerd en in stap 3 opnieuw.

    Doe daarna de test die verder gaat: vul het formulier één keer verkeerd in en verstuur. Staat alles wat wél goed was ingevuld er nog? Zo niet, dan wordt niet twee keer hetzelfde gevraagd maar alles opnieuw — precies op het moment dat de bezoeker toch al iets fout deed.

    Open dit onderwerp op een eigen pagina

  • Zichtbare focus: zo test je het

    De zichtbaarheid van de focus is met het toetsenbord te toetsen. Er is geen software voor nodig.

    Ga als volgt te werk:

    • Open de pagina en klik één keer bovenaan, buiten een link of invoerveld.
    • Druk op Tab, en blijf drukken tot je onderaan de pagina bent.
    • Kijk bij elke druk of zichtbaar is welk onderdeel is geselecteerd.

    Let daarbij op vier dingen:

    • Verdwijnt de focus? Er verandert niets in beeld, terwijl er wel iets is geselecteerd.
    • Springt de focus heen en weer? Dan klopt de volgorde niet met wat er staat. Dat valt onder 2.4.3.
    • Kom je ergens niet meer weg? Een venster of videospeler die je met Tab niet uit komt is een toetsenbordval.
    • Schuift de pagina mee? Staat het geselecteerde onderdeel half onder een vaste balk, dan valt dat onder 2.4.11.

    Is de focus nergens te zien, zoek dan in het stijlbestand naar deze regels:

    outline: none;
    outline: 0;

    Staan die er, en staat er geen eigen rand voor in de plaats, dan is de oorzaak gevonden.

    Open dit onderwerp op een eigen pagina

  • Slepen: zo test je het

    Zoek eerst alles op wat normaal versleept wordt: schuifregelaars, herschikbare lijsten, kaarten en carrousels.

    Ga daarna als volgt te werk:

    • Bedien het onderdeel zonder ingedrukt te houden.
    • Gebruik alleen losse klikken of tikken.
    • Lukt het niet, dan is dat de afwijking.

    Doe de test daarna nog eens met alleen het toetsenbord. Dat is 2.1.1 Toetsenbord, maar het gaat vaak om dezelfde onderdelen.

    Test ook op een aanraakscherm. Onderdelen die met een muis goed werken zijn met een vinger soms alleen te vegen, en dan is er geen alternatief.

    Uitzonderingen waar je geen afwijking op hoeft te melden:

    • Een handtekening zetten. Het pad dat wordt getrokken is het resultaat.
    • Tekenen of schilderen.
    • Een handeling waarbij de precieze plek telt en die niet in stappen te doen is.

    Open dit onderwerp op een eigen pagina

  • Overbodige invoer: wat het criterium vraagt

    Gegevens die binnen hetzelfde proces al zijn ingevuld, mogen niet een tweede keer worden gevraagd. Gebeurt dat toch, dan moeten ze automatisch worden ingevuld of te kiezen zijn uit wat er al staat. Overbodig typen is niet gelijk verdeeld: wie met één vinger, met zijn stem of met een schakelaar werkt is er minuten mee kwijt, en maakt bij elke aanslag kans op een fout.

    Dit criterium is nieuw in WCAG 2.2 en staat op niveau A.

    Er zijn twee uitzonderingen: als het opnieuw invullen nodig is voor de veiligheid, zoals bij een wachtwoord, en als de oude informatie niet meer geldig is.

    Voor bezoekers met een geheugenprobleem is dit scherper dan het lijkt. Wordt een klantnummer uit stap twee in stap vier opnieuw gevraagd, dan is teruggaan soms de enige uitweg — en daarmee het risico dat alles weg is.

    Open dit onderwerp op een eigen pagina

  • Overbodige invoer: invullen of laten kiezen

    De eis laat vrij hóe het wordt opgelost. Er zijn drie manieren, en welke past hangt af van hoe zeker het antwoord hetzelfde is.

    Weet je het antwoord zeker, vul het dan in. De bezoeker kan het nog aanpassen:

    <label for="post-straat">Straat en huisnummer</label>
    <input id="post-straat" name="post_straat"
           value="Marsweg 89A"
           autocomplete="shipping street-address">

    Een vinkje “hetzelfde als hierboven” is de bekendste oplossing en meestal de beste. Zet hem aan als dat het gewone geval is, dan hoeft de meerderheid niets te doen:

    <input type="checkbox" id="zelfde" name="zelfde" checked>
    <label for="zelfde">Mijn afleveradres is hetzelfde als mijn factuuradres</label>

    Zijn er meerdere eerdere antwoorden, geef dan een keuzelijst in plaats van een leeg veld.

    Zet daarnaast op elk veld het juiste autocomplete-woord. Dan vult de browser of de wachtwoordbeheerder het zelf in, zonder eigen code. Daarmee voldoe je meteen aan 1.3.5 Identificeer het doel van de input:

    autocomplete="name"
    autocomplete="email"
    autocomplete="postal-code"
    autocomplete="shipping street-address"
    autocomplete="billing street-address"

    Verbergt het vinkje de velden eronder, zorg dan dat ze weer verschijnen als de bezoeker het uitzet, en dat de focus meegaat.

    Open dit onderwerp op een eigen pagina

  • Slepen: knoppen ernaast

    De oplossing is bijna altijd hetzelfde: het slepen blijft, er komt een manier met losse klikken naast.

    Bij een schuifregelaar gebruik je input type="range", die met de pijltoetsen te bedienen is. Voor de aanwijzer zet je er twee knoppen naast, met het getal erbij zodat zichtbaar is wat er verandert:

    <button type="button" aria-label="Minder">−</button>
    <input type="range" id="prijs" min="0" max="500" step="10" value="100">
    <button type="button" aria-label="Meer">+</button>
    <output for="prijs">100 euro</output>

    Bij een lijst die herschikt kan worden zet je bij elk onderdeel een knop omhoog en een knop omlaag. Dat werkt met de muis, met een aanraakscherm, met een toetsenbord en met een schermlezer:

    <li>
      Nieuwsbrief
      <button type="button" aria-label="Nieuwsbrief omhoog">↑</button>
      <button type="button" aria-label="Nieuwsbrief omlaag">↓</button>
    </li>

    Bij een carrousel horen er knoppen voor vorige en volgende te zijn naast het vegen. Bij een kaart knoppen om te verschuiven en te zoomen; de meeste kaartbibliotheken hebben die al, maar soms staan ze uit.

    Let op de maat van die knoppen. Zijn ze te klein, dan ruil je het ene probleem in voor het andere. Zie het artikel over de grootte van het aanwijsgebied.

    Open dit onderwerp op een eigen pagina

  • Zichtbare focus: wat het criterium vraagt

    Het onderdeel dat met het toetsenbord is geselecteerd heeft de focus. De browser zet daar standaard een rand omheen, zodat zichtbaar is waar de bezoeker zich bevindt. Ontbreekt die rand, dan is niet te zien welk onderdeel wordt bediend en wat er gebeurt bij het indrukken van Enter. Zorg daarom dat de toetsenbordfocus altijd zichtbaar is.

    Dit raakt vooral:

    • Bezoekers die geen muis kunnen vasthouden en alles met het toetsenbord doen.
    • Bezoekers die een schermvergroting gebruiken en maar een klein deel van het scherm zien. De focus geeft aan waar dat deel moet staan.
    • Bezoekers die met een schakelaar of met hun stem werken.

    De rand is op de meeste sites ooit bewust weggehaald, met één regel CSS: outline: none. De standaardrand is niet mooi, maar het antwoord daarop is een betere rand en niet geen rand.

    Dit criterium gaat alleen over de zichtbaarheid van de focus. Of de rand genoeg contrast heeft valt onder 1.4.11 Contrast van niet-tekstuele content, de volgorde onder 2.4.3 Focus volgorde, en of de rand achter een balk verdwijnt onder 2.4.11.

    Open dit onderwerp op een eigen pagina

Terug naar boven