SVG-iconen voor UI-design: De Complete Gids 2026
De ultieme gids voor SVG-iconen in UI-design: 24×24 grid, streekconsistentie, toegankelijkheid, dark mode, SVG-sprites en Figma-exportworkflow.
Founder of VectoSolve
Self-taught developer, founder and sole developer of VectoSolve since 2024. He builds the conversion engine and the cutting, embroidery and 3D printing exports.
How this article was made: drafted with AI assistance, then edited and fact-checked before publication. About the author
Key Takeaways
- Ontwerp elk SVG-icoon op een 24×24 pixel grid met een consistente 2 px streekbreedte om optische harmonie in je componentbibliotheek te garanderen.
- SVG sprite sheets en React wrapper-componenten overtreffen icon fonts in schaalbaarheid, toegankelijkheid en theming.
-
Correct gebruik van
aria-label,role="img"en<title>maakt iconen tot betekenisvol interfacevocabulaire voor hulptechnologie. -
CSS custom properties (
--icon-color,--icon-size) maken dark mode en multi-brand theming tot een enkele tokenwijziging. - Een Figma-naar-SVG exportpipeline gecombineerd met SVGO-optimalisatie houdt elk icoon onder 500 bytes.
Waarom SVG-iconen de enige serieuze keuze zijn voor productie-UI
Icon fonts hadden hun moment. PNG sprites ook. Beide zijn zwakke punten in elk design system dat moet schalen over breakpoints, kleurthema's en toegankelijkheidsvereisten. SVG-iconen zijn de enige architecturaal solide keuze voor teams die productie-interfaces uitleveren.
Een SVG-icoon is een eersteklas DOM-node. Het reageert op CSS custom properties, neemt deel aan de accessibility tree, schaalt zonder kwaliteitsverlies en animeert met standaard CSS-transities.
"Iconen zijn het vocabulaire van een gebruikersinterface. Als het vocabulaire niet klopt, wordt elke zin die het product uitspreekt verwarrend.
Icoon-designprincipes: grid, streek en optische consistentie
De 24×24 grid-standaard
Elk icoon in een samenhangend systeem begint op hetzelfde canvas. Het 24×24 pixel grid verdeelt gelijkmatig in gangbare formaten (12, 16, 20, 48) en lijn uit op een 1 px sub-grid.
Pro Tip: Ontwerp elk icoon op een 24×24 grid met 2 px streekbreedte, 2 px padding als veilige zone, en afgeronde lijnuiteinden/-verbindingen. Deze enkele beperking elimineert 90% van de optische inconsistentieproblemen die teams tegenkomen bij het mixen van iconen uit verschillende bronnen.
Streekconsistentie en visueel gewicht
Een 2 px streek op 24×24 schaalt voorspelbaar: op 16 px wordt het ~1,33 px (scherp op 2x displays), op 48 px wordt het 4 px.
- Eén streekbreedte per set. Kies 1,5 px of 2 px en handhaaf het globaal.
- Consistente uiteinde- en verbindingsstijlen. Afgeronde uiteinden passen bij afgeronde verbindingen. Nooit mixen.
- Optische correctie voor curves. Een 20 px cirkel lijkt kleiner dan een 20 px vierkant — pas aan naar 20,5 px.
Warning: Inconsistente icoonstijlen zullen stilletjes de afwerking van je UI vernietigen. Het mixen van outline en filled iconen, variërende streekbreedtes of het combineren van afgeronde en scherpe hoeken signaleert gebruikers dat het product niet met zorg is ontworpen.
SVG-icoon systeemarchitectuur
| Criterium | Icon Fonts | SVG Sprites | Inline SVG | React-componenten |
|---|---|---|---|---|
| Schaalbaarheid | Goed | Perfect | Perfect | Perfect |
| Multicolor | Nee | Ja | Ja | Ja |
| CSS-theming | Beperkt | Volledig | Volledig | Volledig |
| Toegankelijkheid | Slecht | Goed | Uitstekend | Uitstekend |
| Tree-shaking | Nee | Nee | N/A | Ja |
| Animatie | Geen | Beperkt | Volledig | Volledig |
| Bundle-impact | ~50-200 KB | ~10-80 KB | ~0,3-1 KB elk | ~0,5-1,5 KB elk |
| Dark mode | Fragiel | Robuust | Robuust | Robuust |
SVG Sprite Pattern
<svg xmlns="http://www.w3.org/2000/svg" style="display:none">
<symbol id="icon-check" viewBox="0 0 24 24">
<polyline points="20,6 9,17 4,12" fill="none"
stroke="currentColor" stroke-width="2"/>
</symbol>
</svg>
<svg width="24" height="24" aria-hidden="true">
<use href="#icon-check"/>
</svg>
React Component Pattern
interface IconProps extends React.SVGProps<SVGSVGElement> {
size?: number;
label?: string;
}
export function CheckIcon({ size = 24, label, ...props }: IconProps) {
return (
<svg width={size} height={size} viewBox="0 0 24 24"
fill="none" stroke="currentColor" strokeWidth={2}
role={label ? 'img' : undefined}
aria-label={label} aria-hidden={label ? undefined : true}
{...props}>
<polyline points="20,6 9,17 4,12" />
</svg>
);
}
A Full Year of Conversions for $49
Starter Annual: 25 conversions every month, $49 for the whole year. That is about $4.08 a month · Cancel anytime
Get the Annual DealToegankelijkheidsvereisten
Elk SVG-icoon is decoratief of betekenisvol. Elk heeft een niet-onderhandelbare implementatie.
Decoratief (naast zichtbare tekst — verbergen voor schermlezers):
<button>
<svg aria-hidden="true" focusable="false"><!-- icoon --></svg>
Document opslaan
</button>
Betekenisvol (enige interactieve element — moet zichzelf aankondigen):
<button aria-label="Dialoog sluiten">
<svg role="img" aria-labelledby="close-title" focusable="false">
<title id="close-title">Sluiten</title>
<path d="M18 6L6 18M6 6l12 12" stroke="currentColor" stroke-width="2"/>
</svg>
</button>
Het role="img" attribuut vertelt hulptechnologie om het SVG als één enkel beeld te behandelen in plaats van child-nodes te doorlopen. Combineer met aria-labelledby dat naar een <title> element wijst voor maximale compatibiliteit. Voeg altijd focusable="false" toe om phantom tab-stops in legacy browsers te voorkomen.
Dark mode en theming met CSS custom properties
:root {
--icon-color-primary: #1a1a2e;
--icon-color-success: #059669;
--icon-size-md: 24px;
--icon-stroke: 2px;
}
@media (prefers-color-scheme: dark) {
:root {
--icon-color-primary: #e5e7eb;
--icon-color-success: #34d399;
}
}
.icon {
width: var(--icon-size-md);
height: var(--icon-size-md);
stroke: var(--icon-color-primary);
stroke-width: var(--icon-stroke);
transition: stroke 0.2s ease;
}
Overschakelen naar dark mode is een nul-icooncode-wijziging. De tokens updaten en elk icoon volgt.
Prestatieoptimalisatie
Laat elk icoon door de VectoSolve SVG-optimizer of SVGO lopen vóór het committen. Een typisch 24×24 icoon zou na optimalisatie tussen 200 en 500 bytes moeten zijn.
- Inline SVG voor kritieke above-the-fold iconen. Nul netwerk-overhead.
- Extern sprite sheet voor below-the-fold iconen. Eén request, lange cache.
- Dynamisch
import()voor zelden geziene iconen.
Stel altijd expliciete width en height in op SVG-elementen om Cumulative Layout Shift (CLS) te voorkomen.
Free SVG Tools for Crafters
Design Checker · Color Separator · Mat Preview · Offset Generator · Text to SVG
Check Your SVG FreeFigma-naar-SVG exportworkflow
- Organiseer in Figma. Dedicated Iconen-pagina met 24×24 frames genaamd
icon/check,icon/alert-triangle, etc. - Afvlakken en omlijnen. Boolean-groepen afvlakken en streken omlijnen vóór export.
- Exporteer als SVG. Gebruik Figma's native export met "Outline text" aan en "Include id" uit.
- Optimaliseer. Door de VectoSolve-optimizer halen om metadata te verwijderen en precisie te verminderen.
- Valideer. Bevestig dat paden correct renderen op 16, 24 en 48 px.
- Genereer componenten. Gebruik SVGR of een custom script om SVG's om te zetten in framework-componenten.
Icoonanimatie en micro-interacties
Streek-teken-animatie
.icon-check polyline {
stroke-dasharray: 24;
stroke-dashoffset: 24;
transition: stroke-dashoffset 0.25s cubic-bezier(0.65, 0, 0.35, 1);
}
.checkbox:checked + .icon-check polyline {
stroke-dashoffset: 0;
}
Rotatie en morphing
.icon-loading { animation: spin 0.8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
Pro Tip: Houd icoonanimaties onder 300 ms en beperk ze tot toestandsveranderingsmomenten. Wikkel animaties altijd in een prefers-reduced-motion media query om gebruikers met vestibulaire stoornissen te respecteren.
Bouw vandaag je icoonsysteem
VectoSolve biedt tools om SVG-iconen te converteren, optimaliseren en bewerken in elke fase — van raster-naar-vector conversie tot SVG-optimalisatie en live SVG-editing. Je icoonsysteem is het vocabulaire dat je product gebruikt om te communiceren. Laat elke glyph tellen.
| Integratiemethode | Voordelen | Nadelen |
|---|---|---|
| Inline SVG | Volledige CSS/JS-controle, geen extra requests | Maakt HTML zwaarder bij overmatig gebruik |
| SVG sprite sheet | Eén HTTP-request, cacheable | Geen externe CSS-styling in sommige gevallen |
| React-component (SVGR) | Tree-shakeable, getypte props | Build-stap vereist |
| Icon font | Eenvoudig te gebruiken, breed ondersteund | Slechte toegankelijkheid, geen multicolor |
| <img> tag | Eenvoudig, cacheable | Geen CSS/JS-controle, geen animatie |
A Full Year of Conversions for $49
Starter Annual: 25 conversions every month, $49 for the whole year. That is about $4.08 a month · Cancel anytime
Get the Annual DealBronnen en verdere lectuur
- MDN Web Docs: SVG Icons — Technische referentie voor SVG-elementen, ARIA-rollen en toegankelijke icoonmarkup
- CSS-Tricks: SVG Icon Systems — Complete gids voor het bouwen van SVG sprite sheets en icooncomponentbibliotheken
- web.dev: Web Performance — Google's best practices voor het efficiënt laden en renderen van icoon-assets
- Smashing Magazine: Icon Design — UI-designprincipes voor consistente, pixel-perfecte icoonsystemen