Guida per sviluppatori web: Best practice per l'integrazione SVG
Padroneggia l'integrazione SVG per lo sviluppo web moderno. Impara i metodi di incorporamento, ottimizzazione, animazione e accessibilità per siti web in produzione.

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
- Scegli il metodo di incorporamento SVG giusto: inline per stile/animazione, tag img per visualizzazione semplice, sfondo CSS per uso decorativo
- Gli sprite SVG consolidano più icone in una singola richiesta HTTP, migliorando drasticamente le prestazioni di caricamento
- I componenti React e Vue rendono gli SVG riutilizzabili con props dinamiche size, color e className
-
Aggiungi sempre
role="img"earia-labelledbyper SVG significativi, oaria-hidden="true"per quelli decorativi - Strumenti di build come SVGR (Webpack/Vite) permettono di importare SVG direttamente come componenti di framework
SVG nello sviluppo web moderno
SVG è il formato di riferimento per la grafica web. Comprendere l'integrazione corretta garantisce prestazioni ottimali, accessibilità e qualità visiva su tutti i dispositivi.
Perché SVG per il web
Vantaggi SVG
Benefici SVG:
- Indipendente dalla risoluzione
- Dimensione file ridotta
- Stilizzabile con CSS
- Animabile
- Accessibile
- SEO-friendly
Quando usare SVG
Ideale per:
- Loghi e icone
- Illustrazioni
- Grafici e diagrammi
- Elementi UI
- Grafiche animate
Metodi di integrazione
Confronto dei metodi
<!-- 1. SVG inline -->
<svg viewBox="0 0 100 100">
<circle cx="50" cy="50" r="40"/>
</svg>
<!-- 2. Tag immagine -->
<img src="icon.svg" alt="Icona">
<!-- 3. Sfondo CSS -->
<div style="background-image: url('icon.svg')"></div>
<!-- 4. Object/embed -->
<object data="graphic.svg" type="image/svg+xml"></object>
Selezione del metodo
Scegli in base a:
Inline: Serve controllo CSS/JS
Image: Visualizzazione semplice
Background: Decorativo
Object: Interattivo/complesso
Pro Tip: Per la maggior parte dei progetti moderni, l'SVG inline è la scelta predefinita migliore. Ti dà il pieno controllo CSS e JavaScript, permette l'animazione e evita richieste HTTP aggiuntive. Riserva i tag <img> per SVG grandi e statici dove vuoi il caching del browser.
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 DealBest practice SVG inline
Quando usare inline
// Inline per:
// - Stile CSS necessario
// - Interazione JS necessaria
// - Animazione richiesta
// - Piccoli, usati frequentemente
Ottimizzazione
<!-- SVG inline ottimizzato -->
<svg
viewBox="0 0 24 24"
width="24"
height="24"
aria-hidden="true"
focusable="false"
>
<path d="M12 2L2 22h20z"/>
</svg>
Uso del tag immagine
Implementazione base
<img
src="/icons/logo.svg"
alt="Logo aziendale"
width="200"
height="60"
loading="lazy"
>
Immagini responsive
<picture>
<source
media="(min-width: 1024px)"
srcset="logo-large.svg"
>
<img src="logo.svg" alt="Logo">
</picture>
Uso come sfondo CSS
Implementazione
.icon {
width: 24px;
height: 24px;
background: url('icon.svg') no-repeat center;
background-size: contain;
}
Approccio Data URI
.icon {
background-image: url("data:image/svg+xml,%3Csvg...");
}
Free SVG Tools for Crafters
Design Checker · Color Separator · Mat Preview · Offset Generator · Text to SVG
Check Your SVG FreeSistemi di componenti
Componenti React
// SVG come componente React
const Icon = ({ name, size = 24, color = 'currentColor' }) => (
<svg
width={size}
height={size}
viewBox="0 0 24 24"
fill={color}
>
<use href={`#icon-${name}`} />
</svg>
);
Componenti Vue
<template>
<svg
:width="size"
:height="size"
:class="iconClass"
>
<use :href="iconHref" />
</svg>
</template>
"La migliore integrazione SVG è quella che i tuoi utenti non notano mai — funziona e basta, carica veloce e appare nitida su ogni schermo.
Sprite SVG
Creazione dello sprite
<!-- Definizione dello sprite SVG -->
<svg style="display: none">
<symbol id="icon-home" viewBox="0 0 24 24">
<path d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"/>
</symbol>
<symbol id="icon-menu" viewBox="0 0 24 24">
<path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/>
</symbol>
</svg>
<!-- Uso -->
<svg><use href="#icon-home"/></svg>
Sprite esterni
<!-- File sprite esterno -->
<svg>
<use href="/sprites.svg#icon-home"/>
</svg>
Ottimizzazione delle prestazioni
Ottimizzazione dei file
Passi di ottimizzazione:
1. Rimuovere metadati
2. Semplificare i path
3. Minimizzare i decimali
4. Rimuovere elementi inutilizzati
5. Comprimere/minificare
Strumenti consigliati
Strumenti di ottimizzazione:
SVGO: Ottimizzatore CLI
SVGOMG: Interfaccia web
svgo-loader: Webpack
@svgr/webpack: React
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 DealAccessibilità
Supporto screen reader
<!-- SVG accessibile -->
<svg
role="img"
aria-labelledby="title desc"
>
<title id="title">Carrello</title>
<desc id="desc">Clicca per vedere il carrello</desc>
<path d="..."/>
</svg>
SVG decorativi
<!-- Decorativo (nessuna a11y necessaria) -->
<svg aria-hidden="true" focusable="false">
<path d="..."/>
</svg>
Non dimenticare focusable="false" sugli SVG decorativi in Internet Explorer e nelle vecchie versioni di Edge. Senza di esso, gli utenti della tastiera potrebbero accidentalmente navigare in elementi SVG vuoti, creando un'esperienza di navigazione confusa.
Stile CSS
Opzioni di stile
/* Fill e stroke */
svg {
fill: currentColor;
stroke: none;
}
/* Stati hover */
svg:hover {
fill: #007bff;
}
/* Transizioni */
svg {
transition: fill 0.2s ease;
}
Proprietà personalizzate CSS
:root {
--icon-size: 24px;
--icon-color: currentColor;
}
.icon {
width: var(--icon-size);
height: var(--icon-size);
fill: var(--icon-color);
}
Animazione
Animazione CSS
/* Animazione di rotazione */
@keyframes spin {
to { transform: rotate(360deg); }
}
.loading-icon {
animation: spin 1s linear infinite;
}
Animazione SMIL
<svg>
<circle cx="50" cy="50" r="20">
<animate
attributeName="r"
values="20;35;20"
dur="1s"
repeatCount="indefinite"
/>
</circle>
</svg>
Free SVG Tools for Crafters
Design Checker · Color Separator · Mat Preview · Offset Generator · Text to SVG
Check Your SVG FreeIntegrazione nel build
Configurazione Webpack
// webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.svg$/,
use: ['@svgr/webpack'],
},
],
},
};
Configurazione Vite
// vite.config.js
import svgr from 'vite-plugin-svgr';
export default {
plugins: [svgr()],
};
Ottenere asset pronti per SVG
Da raster a SVG
Workflow di conversione:
1. Esportare raster alla massima qualità
2. Convertire con VectoSolve
3. Ottimizzare l'output SVG
4. Integrare nel progetto
Considerazioni sulla qualità
Preparazione SVG:
- Path puliti
- Nodi minimi
- viewBox corretto
- Nessun raster incorporato
Conclusione
Un'integrazione SVG corretta è essenziale per lo sviluppo web moderno. Dalla scelta del metodo di incorporamento giusto all'ottimizzazione e accessibilità, padroneggiare l'uso degli SVG migliora sia le prestazioni che l'esperienza utente. Usa VectoSolve per creare SVG puliti da grafiche esistenti.