Icone SVG per il Design UI: La Guida Completa 2026
La guida definitiva alle icone SVG per il design di interfacce: griglia 24×24, consistenza del tratto, accessibilità, dark mode, sprite SVG e workflow di esportazione da Figma.
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
- Progetta ogni icona SVG su una griglia di 24×24 pixel con un tratto di 2 px costante per garantire armonia ottica nella tua libreria di componenti.
- I fogli sprite SVG e i componenti React wrapper superano gli icon font in scalabilità, accessibilità e tematizzazione.
-
L'uso corretto di
aria-label,role="img"e<title>trasforma le icone in vocabolario d'interfaccia significativo per le tecnologie assistive. -
Le proprietà CSS custom (
--icon-color,--icon-size) rendono il dark mode e il multi-branding un singolo cambio di token. - Una pipeline di esportazione Figma-a-SVG abbinata all'ottimizzazione SVGO mantiene ogni icona sotto i 500 byte.
Perché le icone SVG sono l'unica scelta seria per UI in produzione
Gli icon font hanno avuto il loro momento. Gli sprite PNG anche. Entrambi sono punti deboli in qualsiasi design system che deve scalare tra breakpoint, temi colore e requisiti di accessibilità. Le icone SVG sono l'unica scelta architetturalmente solida per team che consegnano interfacce in produzione.
Un'icona SVG è un nodo DOM di prima classe. Risponde alle proprietà CSS custom, partecipa all'albero di accessibilità, scala senza perdita di qualità e si anima con transizioni CSS standard.
"Le icone sono il vocabolario di un'interfaccia utente. Se il vocabolario è sbagliato, ogni frase che il prodotto pronuncia diventa confusa.
Principi di design delle icone: griglia, tratto e consistenza ottica
Lo standard della griglia 24×24
Ogni icona in un sistema coerente inizia sullo stesso canvas. La griglia di 24×24 pixel si divide uniformemente nelle dimensioni comuni (12, 16, 20, 48) e si allinea a una sotto-griglia di 1 px.
Pro Tip: Progetta ogni icona su una griglia 24×24 con uno spessore tratto di 2 px, 2 px di padding come zona sicura, e estremi/giunzioni arrotondati. Questo singolo vincolo elimina il 90% dei problemi di inconsistenza ottica che i team incontrano mescolando icone da fonti diverse.
Consistenza del tratto e peso visivo
Un tratto di 2 px a 24×24 scala in modo prevedibile: a 16 px diventa ~1,33 px (nitido su display 2x), a 48 px diventa 4 px.
- Uno spessore di tratto per set. Scegli 1,5 px o 2 px e applicalo globalmente.
- Stili di estremo e giunzione consistenti. Estremi arrotondati vanno con giunzioni arrotondate. Mai mescolare.
- Correzione ottica per le curve. Un cerchio di 20 px sembra più piccolo di un quadrato di 20 px — regola a 20,5 px.
Warning: Stili di icone inconsistenti distruggeranno silenziosamente la rifinitura della tua UI. Mescolare icone outline e filled, variare gli spessori di tratto o combinare angoli arrotondati e spigolosi segnala agli utenti che il prodotto non è stato progettato con cura.
Architettura del sistema di icone SVG
| Criterio | Icon Font | Sprite SVG | SVG Inline | Componenti React |
|---|---|---|---|---|
| Scalabilità | Buona | Perfetta | Perfetta | Perfetta |
| Multi-colore | No | Sì | Sì | Sì |
| Tematizzazione CSS | Limitata | Completa | Completa | Completa |
| Accessibilità | Scarsa | Buona | Eccellente | Eccellente |
| Tree-shaking | No | No | N/A | Sì |
| Animazione | Nessuna | Limitata | Completa | Completa |
| Impatto bundle | ~50-200 KB | ~10-80 KB | ~0,3-1 KB ciascuno | ~0,5-1,5 KB ciascuno |
| Dark mode | Fragile | Robusto | Robusto | Robusto |
Pattern SVG Sprite
<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>
Pattern Componente React
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 DealRequisiti di accessibilità
Ogni icona SVG è decorativa o significativa. Ciascuna ha un'implementazione non negoziabile.
Decorativa (accanto a testo visibile — nascondere dai lettori di schermo):
<button>
<svg aria-hidden="true" focusable="false"><!-- icona --></svg>
Salva documento
</button>
Significativa (unico elemento interattivo — deve annunciarsi):
<button aria-label="Chiudi finestra di dialogo">
<svg role="img" aria-labelledby="close-title" focusable="false">
<title id="close-title">Chiudi</title>
<path d="M18 6L6 18M6 6l12 12" stroke="currentColor" stroke-width="2"/>
</svg>
</button>
L'attributo role="img" indica alle tecnologie assistive di trattare l'SVG come un'immagine singola anziché attraversare i nodi figli. Combinalo con aria-labelledby che punta a un elemento <title> per la massima compatibilità. Aggiungi sempre focusable="false" per evitare tab stop fantasma nei browser legacy.
Dark mode e tematizzazione con proprietà CSS custom
: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;
}
Passare al dark mode è un cambio zero codice icone. I token si aggiornano e ogni icona segue.
Ottimizzazione delle prestazioni
Passa ogni icona nell'ottimizzatore SVG di VectoSolve o SVGO prima di fare commit. Un'icona 24×24 tipica dovrebbe pesare tra 200 e 500 byte dopo l'ottimizzazione.
- SVG inline per icone critiche above-the-fold. Zero overhead di rete.
- Sprite sheet esterno per icone below-the-fold. Una richiesta, cache lungo.
import()dinamico per icone raramente viste.
Imposta sempre width e height espliciti sugli elementi SVG per evitare il Cumulative Layout Shift (CLS).
Free SVG Tools for Crafters
Design Checker · Color Separator · Mat Preview · Offset Generator · Text to SVG
Check Your SVG FreeWorkflow di esportazione Figma-a-SVG
- Organizzare in Figma. Pagina dedicata alle icone con frame 24×24 nominati
icon/check,icon/alert-triangle, ecc. - Appiattire e vettorializzare. Appiattisci i gruppi booleani e vettorializza i tratti prima dell'esportazione.
- Esportare come SVG. Usa l'esportazione nativa di Figma con "Outline text" attivo e "Include id" disattivato.
- Ottimizzare. Passa nell'ottimizzatore VectoSolve per rimuovere metadati e ridurre la precisione.
- Validare. Conferma che i tracciati si renderizzano correttamente a 16, 24 e 48 px.
- Generare componenti. Usa SVGR o uno script custom per convertire SVG in componenti framework.
Animazione delle icone e micro-interazioni
Animazione di tracciamento
.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;
}
Rotazione e morphing
.icon-loading { animation: spin 0.8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
Pro Tip: Mantieni le animazioni delle icone sotto 300 ms e limitale ai momenti di cambio stato. Avvolgi sempre le animazioni in una media query prefers-reduced-motion per rispettare gli utenti con disturbi vestibolari.
Costruisci il tuo sistema di icone oggi
VectoSolve fornisce strumenti per convertire, ottimizzare e modificare icone SVG in ogni fase — dalla conversione raster a vettore all'ottimizzazione SVG e all'editing SVG in tempo reale. Il tuo sistema di icone è il vocabolario che il tuo prodotto usa per comunicare.
| Metodo di integrazione | Pro | Contro |
|---|---|---|
| SVG inline | Controllo CSS/JS totale, nessuna richiesta extra | Appesantisce HTML se usato troppo |
| Sprite sheet SVG | Una richiesta HTTP, cacheable | Nessuno stile CSS esterno in alcuni casi |
| Componente React (SVGR) | Tree-shakeable, props tipizzate | Step di build richiesto |
| Icon font | Semplice da usare, supporto ampio | Scarsa accessibilità, nessun multicolore |
| Tag <img> | Semplice, cacheable | Nessun controllo CSS/JS, nessuna animazione |
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 DealFonti e approfondimenti
- MDN Web Docs: SVG Icons — Riferimento tecnico per elementi SVG, ruoli ARIA e markup di icone accessibili
- CSS-Tricks: SVG Icon Systems — Guida completa per costruire sprite sheet SVG e librerie di componenti icone
- web.dev: Web Performance — Best practice Google per caricare e renderizzare asset di icone efficientemente
- Smashing Magazine: Icon Design — Principi di design UI per sistemi di icone consistenti e pixel-perfect