back to top

Disegnare con SVG: una guida ai path e alle forme

Introduzione a SVG

SVG (Scalable Vector Graphics) è un formato per la rappresentazione di grafica vettoriale che utilizza XML per descrivere immagini bidimensionali. A differenza delle immagini raster, come JPEG o PNG, SVG permette di mantenere la qualità inalterata a qualsiasi risoluzione, ideale per il web design moderno e responsive.

In frontend development, conoscere e padroneggiare SVG significa ampliare gli strumenti a disposizione per creare interfacce grafiche ricche e scalabili, facilmente animabili e manipolabili via CSS e JavaScript.

Che cosa sono i path?

I path in SVG sono elementi fondamentali utilizzati per disegnare forme complesse. Sono definiti tramite una serie di comandi e coordinate che descrivono segmenti di linea, curve e movimenti all’interno di un piano cartesiano.

<path> è l’elemento SVG più versatile per realizzare qualsiasi forma, dai semplici poligoni fino a oggetti estremamente dettagliati.

Comandi base dei path

M (moveto)
sposta il punto di disegno senza tracciare una linea
L (lineto)
disegna una linea retta tra il punto attuale e la nuova posizione
C (curveto)
disegna una curva di Bézier cubica con due punti di controllo
Z (closepath)
chiude il path collegando l’ultimo punto con il primo

Esempio semplice di path:

<svg width="200" height="200" xmlns="http://www.w3.org/2000/svg">
  <path d="M10 10 L100 10 L100 100 L10 100 Z" fill="lightblue" stroke="navy" stroke-width="2" />
</svg>

Creare forme base

SVG offre anche elementi dedicati per forme geometriche semplici, che sono più immediati rispetto ai path quando si disegnano rettangoli, cerchi, ellissi, linee e poligoni.

  • <rect>: rettangoli con angoli arrotondati opzionali
  • <circle>: cerchi definiti da un centro e un raggio
  • <ellipse>: ellissi con raggi indipendenti su x e y
  • <line>: segmenti di linea semplici
  • <polygon> e <polyline>: poligoni chiusi o aperti definiti da una lista di punti

Esempio di forme base con SVG:

<svg width="250" height="150" xmlns="http://www.w3.org/2000/svg">
  <rect x="10" y="10" width="80" height="50" fill="#8BC34A" rx="10" />
  <circle cx="150" cy="50" r="30" fill="#2196F3" />
  <ellipse cx="200" cy="100" rx="50" ry="20" fill="#FFC107" />
  <line x1="10" y1="100" x2="100" y2="130" stroke="#FF5722" stroke-width="3" />
  <polygon points="150,110 180,140 120,140" fill="#9C27B0" />
</svg>

Animazioni in SVG

SVG supporta animazioni native tramite SMIL (<animate>, <animateTransform>), ma oggi è comune animare SVG usando CSS e JavaScript per avere maggior controllo e compatibilità, specialmente in progetti frontend moderni.

Utilizzare animazioni CSS per modificare attributi come stroke-dasharray e stroke-dashoffset consente di creare effetti di disegno in tempo reale su path.

Esempio di animazione stroke-dasharray con CSS:

path {
  stroke: #007BFF;
  stroke-width: 4;
  fill: none;
  stroke-dasharray: 300;
  stroke-dashoffset: 300;
  animation: draw 2s forwards;
}

@keyframes draw {
  to {
    stroke-dashoffset: 0;
  }
}

Esempio HTML per animazione sul path:

<svg width="200" height="100" xmlns="http://www.w3.org/2000/svg">
  <path d="M10 80 C 40 10, 65 10, 95 80 S 150 150, 180 80" />
</svg>

Utilizzare SVG con CSS

Il grande vantaggio di SVG è la sua integrabilità con CSS: è possibile selezionare singoli elementi e modificarne lo stile, animarli o modificarne le proprietà dinamicamente in risposta a eventi utente.

Inoltre, le variabili CSS sono perfettamente utilizzabili per parametrizzare colori e dimensioni rendendo il design scalabile e personalizzabile attraverso le proprietà personalizzate (--variabile).

Esempio di utilizzo CSS con variabili:

:root {
  --main-color: #4CAF50;
  --hover-color: #81C784;
}

circle {
  fill: var(--main-color);
  transition: fill 0.3s ease;
}

circle:hover {
  fill: var(--hover-color);
}

Markup SVG con cerchio interattivo:

<svg width="150" height="150" xmlns="http://www.w3.org/2000/svg">
  <circle cx="75" cy="75" r="50" />
</svg>

Esempi pratici

Vediamo ora come combinare path, forme e animazioni per realizzare un’icona animata semplice e scalabile:

<svg width="100" height="100" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
  <path d="M10 80 Q 52.5 10, 95 80 T 180 80" stroke="#333" stroke-width="3" fill="none"/>
</svg>

Animiamo il path simulando un disegno a mano:

path {
  stroke-dasharray: 300;
  stroke-dashoffset: 300;
  animation: draw 3s ease forwards;
}

@keyframes draw {
  to {
    stroke-dashoffset: 0;
  }
}

Questa tecnica è molto utilizzata in web design per introdurre icone e elementi grafici con un effetto dinamico che coinvolge l’utente.

Inoltre, è possibile arricchire la grafica con performance budget e caching strategico per mantenere la pagina veloce senza sacrificare le animazioni e la qualità visiva (Service Worker Caching Strategico).

Best practices

  • Preferisci sempre forme e path semplici per migliorare performance e manutenzione.
  • Ottimizza SVG riducendo attributi inutili e usando strumenti di compressione dedicati.
  • Utilizza CSS per le animazioni semplici, affidati a JavaScript solo se serve complessità o interattività avanzata (Testing frontend moderno può aiutare a mantenere stabile l’integrazione).
  • Assicurati che SVG sia accessibile, aggiungendo descrizioni con <title> e <desc>, soprattutto per icone e elementi interattivi (Accessibilità web 2025).
  • Carica gli SVG in modo efficiente, inline o come risorse esterne a seconda del contesto (Hook wp_enqueue_script è utile per caricare asset nel contesto WordPress modernamente).

Conclusione

SVG rappresenta uno strumento potente e versatile per frontend developer che desiderano creare grafica vettoriale nitida, scalabile e interattiva. La conoscenza approfondita dei path e delle forme di base, unita all’uso intelligente di CSS e JavaScript per animazioni, consente di realizzare design moderni e performanti.

Integrare SVG nei tuoi progetti web significa non solo migliorare la qualità visiva e l’esperienza utente, ma anche ottimizzare il caricamento e la manutenzione del codice grafico. Ti invito a esplorare anche altre guide per ottimizzare le performance e la sicurezza dei tuoi progetti frontend, e adeguarti agli standard 2025 di accessibilità e prestazioni web.

Condividi

Articoli Recenti

Categorie popolari