Iconen
Iconen worden gebruikt om extra betekenis te geven. Ze brengen boodschappen in één oogopslag over en vestigen aandacht op belangrijke informatie. Ook kunnen ze hulp bieden aan iemand met een cognitieve beperking of als iemand moeite heeft met taal.
Let op! Tekst zou altijd voorrang moeten krijgen ten opzichte van iconen. Gebruik iconen alleen waar extra duidelijkheid gewenst is.
Binnen een Design System is het verstandig om iconen consistent toe te passen. Dat gaat gemakkelijk wanneer je gebruik maakt van een iconenset. Welke iconenset je gebruikt voor jouw organisatie staat je helemaal vrij.
Vanuit het NL Design System gebruiken we twee iconensets. De iconen in deze sets typeren we als Functionele iconen en Toptaak iconen.
Functionele iconen
Bij functionele iconen is het belangrijk dat ze simpel van vorm zijn. Hierdoor kun je ze klein toepassen en blijven ze toch herkenbaar. Denk bijvoorbeeld aan een icoon voor een button of foutmelding.
Voor het 'Voorbeeld thema' maken we gebruik van een selectie uit de Tabler iconenset.
Grid
Positioneer iconen binnen een vierkant grid.
Per icoon kan de vorm verschillen in hoogte en breedte. Denk bijvoorbeeld aan een stoplicht of een bus. Een iconenset wordt vaak ontworpen op basis van een vierkant grid.
Door te werken met een grid zorg je voor consistente vormen en afmetingen. Door iconen binnen dit vierkant te positioneren zijn ze inwisselbaar. Hierdoor zullen teksten niet verspringen als je de iconen bijvoorbeeld toepast in een lijst.
Grootte
Stem de grootte van je iconen af op je lettergrootte.
Hoewel een iconenset op een bepaald grid wordt ontworpen kan het icoon wel op verschillende groottes worden toegepast. Daarbij is het verstandig om deze groottes af te stemmen met je lettergrootte.
Voor functionele iconen is dit vaak 16×16, 24×24 of 32×32. Deze formaten sluiten mooi aan bij het veelal toegepaste 8pt grid.
Grootte als design token
Voor de grootte van functionele iconen de nl.icon.functional.size
Design Token beschikbaar. Komen de iconen voor jouw organisatie groter of kleiner beter tot hun recht? Pas de waarde van deze common token aan en de wijziging zal in vrijwel componenten worden doorgevoerd
Lijndikte
Laat lijndikte meeschalen.
Een ‘outline’ iconenset is vaak opgebouwd uit lijnen (stroke). Bijvoorbeeld met een lijndikte van 2px. Hierdoor blijft de lijndikte 2px ongeacht hoe groot het icoon is. Over het algemeen is dit niet het gewenste gedrag omdat je zo verschillende gewichten in iconen kan krijgen.
Kleur
Zorg ook bij iconen voor voldoende contrast.
Iconen nemen vaak de kleur van de bijbehorende tekst over. Zodoende hebben ze, als de tekst het ook heeft, vanzelf voldoende contrast.
Gebruik je een icoon zonder tekst? Of wil je het icoon een andere kleur geven dan de bijbehorende tekst? Houd dan ook rekening met contrast. Voor iconen zou het contrast tussen de voor- en achtergrondkleur 3:1 of groter moeten zijn. Tenzij het icoon puur decoratief is.
Iconen zijn een ideaal hulpmiddel om niet alleen op kleur te vertrouwen om een boodschap over te brengen. Denk bijvoorbeeld aan een foutmeldingen of feedback elementen.
Wanneer je iconen als SVG gebruikt kun je de iconen kleuren door middel van current color
. Op die manier neemt het icoon de waarde over van de color
die is toegepast. Hierdoor kleuren je iconen ook netjes mee als iemand gebruik maakt van bijvoorbeeld een donker thema (dark-mode) of Windows High Contrast Mode.
.icon {
fill: currentColor;
}
Let wel; SVG gebruikt fill
, niet color
of background-color
.
Soms wordt een icoon gebruikt om een status aan te geven. Denk bijvoorbeeld aan geluid aan/uit zetten of het wel/niet tonen van een wachtwoord. In dit soort gevallen is het belangrijk om niet enkel op kleur te vertrouwen, omdat kleur niet door iedereen op dezelfde manier wordt ervaren. Een afwijking in de vorm van het icoon is dan een oplossing.
Iconen kiezen
Respecteer conventies.
Voor iconen, en met name functionele iconen, is het belangrijk om conventies te volgen. Zo zijn er bepaalde iconen die sterk aan concept gerelateerd zijn. Het is verstandig deze conventies te respecteren en deze iconen niet ineens voor een andere functie te gebruiken.
In Figma kun je iconen aliassen mee geven door een beschrijving toe te voegen. Wanneer men dan op 'Toevoegen' zoekt komt het 'Plus' icoon bovendrijven.
Twijfel je of je icoon herkenbaar is? Laat het onderzoeken. Zo heeft Gemeente Utrecht inmiddels meerdere iconen laten onderzoeken waardoor ze deze met zekerheid kunnen toepassen.
SVG
Gebruik SVG voor iconen.
SVG staat voor Scalable Vector Graphics en is een ideaal bestandsformaat voor iconen.
Voordelen van SVG:
- Schaalbaar zonder kwaliteitsverlies
- Licht in gewicht wat bijdraagt aan korte laadtijden
- Te kleuren door middel van CSS
- Te animeren
Iconen als font
Gebruik geen font voor iconen.
In tegenstelling tot SVG worden iconen van een font toegewezen aan Unicode-punten en geïnterpreteerd als tekst. Dit kan tot toegankelijkheidsproblemen leiden. Zo kan iemand een eigen lettertype hebben geïnstalleerd. Mensen met dyslectie stellen soms hun eigen lettertypen in voor een betere leesbaarheid. In dat geval worden de iconen vervangen door 'ontbrekende tekens'-symbolen. Dat gebeurd trouwens ook als het font niet geladen wordt.
Ook kan een icoon bij een icoon-font gekoppeld zijn aan één bepaald teken. Zo kan een icoon voor sluiten toegewezen zijn aan een 'A'. Wanneer men een ander font gebruik of als het icoon font niet wordt geladen staat er simpelweg een 'A'. Daarnaast wordt dit icoon door schermlezers ook uitgesproken als 'A'.
Toepassen in code
Iconen moeten altijd vergezeld worden door een, eventueel visueel verborgen, tekstlabel.
Het icoon zelf moet het attribuut focusable="false"
hebben om het uit de focus-volgorde te verwijderen. Dit is een standaardinstelling in sommige versies van Internet Explorer en Edge.
Het is niet nodig een alternatieve tekst aan te bieden voor iconen waarbij de tekst al beschikbaar is. In dit geval geef je het icoon in de code aria-hidden="true"
mee. Zo is het tekstlabel "Verwijderen" in het volgende voorbeeld voldoende, en is het niet nodig om het icoon te identificeren.
<button>
<svg class="nl-icon nl-icon--text" focusable="false" aria-hidden="true">
<use xlink:href="assets/svg/icons-core-set.svg#-icon-trashcan"></use>
</svg>
<span>Delete</span>
</button>
Alleen iconen die zeer goed ingeburgerd zijn, zoals een vergrootglas (voor zoeken) of een kruis (voor sluiten), zou je kunnen gebruiken zonder aanvullende visuele tekst. In deze gevallen wordt een visueel verborgen <span>
aanbevolen.
Verberg in deze gevallen de <span>
met behulp van de class visually-hidden
of iets vergelijkbaars. Deze class verbergt de tekst enkel visueel. Schermlezers zullen de tekst nog steeds voorlezen.
Ook aria-label
kan dit voor elkaar krijgen maar aria-label
kan voor vertaalproblemen zorgen.
.visually-hidden {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
white-space: nowrap;
width: 1px;
}
Tooltips
Als een icoon een tooltip heeft, kan de tooltip als label ingezet worden. In het volgende voorbeeld zorgt het element class="tooltip"
voor het label.
<a href="link/to/download" download>
<svg class="nl-icon nl-icon--text" focusable="false" aria-hidden="true">
<use xlink:href="assets/svg/nl-icons-core-set.svg#nl-icon-download"></use>
</svg>
<span class="tooltip">Download</span>
</a>
Standaard zal de tooltip worden verborgen door middel van display: none
. De tooltip zal dan getoond worden bij hover of focus.
[download] .tooltip {
display: none;
}
[download]:hover .tooltip,
[download]:focus .tooltip {
display: block;
}
Vertrouw niet op het title
attribuut voor tooltips. Deze verschijnen niet bij focus en zijn daarom niet toegankelijk via het toetsenbord. Ze worden meestal ook niet voorgelezen door schermlezers als de instellingen hier niet op ingesteld zijn.
Als de tekst van de tooltip buiten element staat, kun je het aan dit element koppelen met behulp van aria-labelledby
. In het volgende voorbeeld delen aria-labelledby
en het id
van de tooltip de waarde download-tooltip
. Teksten die zijn gekoppeld zijn via aria-labelledby
worden wel vertaald.
<div class="download-container">
<a href="link/to/download" download aria-labelledby="download-tooltip">
<svg class="nl-icon nl-icon--text" focusable="false" aria-hidden="true">
<use xlink:href="assets/svg/nl-icons-core-set.svg#nl-icon-download"></use>
</svg>
</a>
<span class="tooltip" id="download-tooltip">Download</span>
</div>
Toptaak iconen
Toptaak iconen zijn gedetailleerder dan functionele iconen. Dat kan ook makkelijk omdat ze groter worden ingezet. Toptaak iconen helpen bezoekers van gemeentelijke websites om sneller bij de juiste informatie te komen.
Voor het 'Voorbeeld thema' maken we gebruik van de outline versie van de iconenset: Gemeenten iconen. Deze iconenset wordt Open Source aangeboden. Je mag deze iconen dus ook gebruiken voor jouw organisatie.
Ga naar gemeenteniconen.nl voor meer informatie over het gebruik.
Meer informatie
Deze documentatie is onder andere gebaseerd op de documentatie rondom iconen van BBC GEL.
Gerelateerde WCAG Richtlijnen
Links
A complete guide to iconography - Bonnie Kate Wolf
Uitgebreid artikel over het ontwerpen en toepassen van iconen binnen een Design System.
Pixel-snapping in icon design - Helena Zhang
Artikel over een onderzoek naar het scherp tonen van iconen.
Inline SVG vs Icon Fonts - CSS-tricks
Artikel over de verschillen tussen ‘Inline SVG’ en ‘Icon Fonts’ worden beschreven.
Are Hollow Icons Really Harder to Recognize Than Solid Icons? - Curt Arledge
Artikel over een onderzoek naar het gebruik van ‘outline’ iconen ten opzicht van ‘solid’ iconen.
Icons - Google Material
Documentatie over het gebruik van iconen binnen het Material Design System van Google.
Accessible icon buttons - Sara Soueidan
Artikel over het toegankelijk opzetten van buttons die alleen een icoon tonen. Er komen verschillende methodes aan bod.
Aria-label is a xenophobe - Heydon Heydon Pickering
Artikel over het gebruik van Aria-label en de problemen die hierbij kunnen optreden bij het vertalen van een webpagina.
Tabler icons - Codecalm
De iconenset die we bij het NL Design System gebruiken voor de functionele iconen van het Voorbeeld thema.
Gemeenteniconen.nl
De iconenset die we bij het NL Design System gebruiken voor het Voorbeeld thema.
Help deze documentatie te verbeteren
Om ervoor te zorgen dat deze documentatie nuttig, relevant en up-to-date is, kun je een wijziging voorstellen via Github.
Vragen
Heb je een vraag? Twijfel niet en neem contact op met het kernteam.