Skip to content
Tutorial

Animazioni SVG con CSS e JavaScript: Esempi di Codice per Sviluppatori (2026)

Esempi di codice pratici per animazioni SVG con CSS keyframes, GSAP, Framer Motion e JavaScript vanilla. Snippet pronti per la produzione per loader, transizioni, effetti hover e animazioni allo scroll.

Robin Monteiro2 febbraio 202610 ottobre 202615 min
Use this article with an AI assistant:
.md
Animazioni SVG con CSS e JavaScript: Esempi di Codice per Sviluppatori (2026)
R
Robin Monteiro

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

Image vectorizationCutting machine filesEmbroidery filesSVG
Free previewNo signupFull-quality output

Perché le Animazioni SVG Contano nel 2026

Le animazioni SVG sono diventate la spina dorsale delle interfacce web moderne. Dalle micro-interazioni sottili che guidano gli utenti in un flusso di checkout alle animazioni hero a schermo intero che definiscono l'identità di un brand, gli SVG animati offrono un movimento indipendente dalla risoluzione, leggero e accessibile che nessun altro formato può eguagliare.

A differenza delle animazioni raster (GIF, PNG animati o persino video), gli SVG si scalano perfettamente a qualsiasi dimensione di schermo, rimangono nitidi su display 4K e Retina, e possono essere manipolati con lo stesso CSS e JavaScript che già conosci. Nel 2026, con i Core Web Vitals che impattano direttamente sui ranking di ricerca, padroneggiare le animazioni SVG non è opzionale — è essenziale.

Tecniche di animazione SVG: CSS, JavaScript e approcci basati sull'IA

Questa guida ti accompagna attraverso ogni approccio principale per animare gli SVG, dal CSS puro alle librerie JavaScript avanzate, con esempi di codice pronti per la produzione ad ogni passo.


Fondamenti di Animazione CSS per SVG

CSS è il tuo primo e spesso migliore strumento per le animazioni SVG. Il thread compositor del browser gestisce le animazioni CSS sulle proprietà transform e opacity senza toccare il thread principale, offrendoti prestazioni fluide a 60fps gratuitamente.

Transizioni CSS: L'Approccio Più Semplice

/* Scala al hover su un'icona SVG */
.svg-icon {
  transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
  transform-origin: center;
}
.svg-icon:hover {
  transform: scale(1.15);
}

.svg-icon path {
  transition: fill 0.25s ease-in-out, stroke 0.25s ease-in-out;
  fill: #6366f1;
}
.svg-icon:hover path {
  fill: #818cf8;
}

Suggerimento: Imposta sempre transform-origin esplicitamente sugli elementi SVG. A differenza degli elementi HTML centrati di default, gli elementi SVG usano l'origine del viewport SVG (0, 0) di default.

Animazioni CSS Keyframes: Controllo Creativo Totale

@keyframes pulse {
  0% { transform: scale(1); opacity: 1; }
  50% { transform: scale(1.4); opacity: 0.6; }
  100% { transform: scale(1); opacity: 1; }
}
.notification-dot {
  animation: pulse 2s ease-in-out infinite;
  transform-origin: center;
}

@keyframes draw-path {
  from { stroke-dashoffset: 1000; }
  to { stroke-dashoffset: 0; }
}
.draw-line {
  stroke-dasharray: 1000;
  animation: draw-path 2.5s ease-out forwards;
}

La tecnica di disegno con stroke-dasharray è una delle animazioni SVG più popolari sul web. Funziona impostando la lunghezza del trattino uguale alla lunghezza totale del percorso, poi animando l'offset dal massimo a zero — creando l'illusione che il percorso venga disegnato in tempo reale.

Transform CSS: Il Sweet Spot delle Prestazioni

@keyframes spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

@keyframes float-and-rotate {
  0% { transform: translateY(0px) rotate(0deg); }
  25% { transform: translateY(-10px) rotate(5deg); }
  50% { transform: translateY(-18px) rotate(0deg); }
  75% { transform: translateY(-10px) rotate(-5deg); }
  100% { transform: translateY(0px) rotate(0deg); }
}
.floating-element {
  animation: float-and-rotate 4s ease-in-out infinite;
  transform-origin: center;
}

Le Proprietà Sicure per il Compositor: Solo transform e opacity sono garantite di essere eseguite sul thread compositor. Animare fill, stroke, width, height o d innesca ricalcoli del layout.


Approcci di Animazione JavaScript

Quando CSS raggiunge i suoi limiti — valori dinamici, trigger allo scroll, simulazioni fisiche o timeline complesse — JavaScript subentra.

La Web Animations API (WAAPI)

const logo = document.querySelector("#svg-logo");

const fadeIn = logo.animate(
  [
    { opacity: 0, transform: "translateY(20px) scale(0.95)" },
    { opacity: 1, transform: "translateY(0) scale(1)" }
  ],
  {
    duration: 800,
    easing: "cubic-bezier(0.22, 1, 0.36, 1)",
    fill: "forwards"
  }
);

fadeIn.finished.then(() => {
  console.log("Animazione del logo completata");
  animateSubElements();
});
Animazione SVG: disegno di percorsi ed effetti di morphing

GSAP: La Libreria Standard dell'Industria

GreenSock Animation Platform (GSAP) resta la libreria di animazione più collaudata nel 2026. I suoi plugin specifici per SVG gestiscono casi limite che richiederebbero centinaia di righe di codice personalizzato.

import { gsap } from "gsap";

gsap.from("#hero-svg", {
  opacity: 0, scale: 0.8, rotation: -5,
  duration: 1.2, ease: "back.out(1.7)",
  transformOrigin: "center center"
});

const tl = gsap.timeline({ defaults: { ease: "power2.out" } });

tl.from("#bg-circle", { scale: 0, duration: 0.6 })
  .from("#icon-paths path", {
    strokeDashoffset: 500, duration: 1, stagger: 0.15
  }, "-=0.3")
  .from("#label-text", { opacity: 0, y: 15, duration: 0.5 }, "-=0.5");

Animazioni SMIL: Ancora Vive, Ma da Usare con Parsimonia

<svg viewBox="0 0 100 100">
  <circle cx="50" cy="50" r="20" fill="#6366f1">
    <animate attributeName="r" values="20;25;20" dur="2s" repeatCount="indefinite" />
    <animate attributeName="opacity" values="1;0.6;1" dur="2s" repeatCount="indefinite" />
  </circle>
</svg>

Ottimizzazione delle Prestazioni in Dettaglio

La Regola del Thread Compositor

/* BENE: Animazioni sul thread compositor */
.optimized {
  transition: transform 0.3s, opacity 0.3s;
}
.optimized:hover {
  transform: translateY(-4px) scale(1.02);
  opacity: 0.9;
}

/* MALE: Animazioni sul thread principale */
.unoptimized {
  transition: top 0.3s, width 0.3s, fill 0.3s;
}

Ridurre la Complessità SVG

  • Semplifica i percorsi: Usa strumenti come SVGO o l'ottimizzatore integrato di VectoSolve
  • Rimuovi elementi nascosti
  • Appiattisci i gruppi: L'annidamento inutile di <g> aggiunge overhead
  • Usa simboli per forme ripetute

Accessibilità: Rispettare le Preferenze dell'Utente

Non tutti vogliono o possono tollerare il movimento sullo schermo. Gli utenti con disturbi vestibolari o sensibilità al movimento hanno un'impostazione di sistema che devi rispettare.

.animated-element {
  animation: slide-in 0.6s ease-out forwards;
}

@media (prefers-reduced-motion: reduce) {
  .animated-element {
    animation: none;
    opacity: 1;
  }
}
const prefersReduced = window.matchMedia(
  "(prefers-reduced-motion: reduce)"
).matches;

if (prefersReduced) {
  element.style.opacity = "1";
} else {
  element.animate(
    [{ opacity: 0 }, { opacity: 1 }],
    { duration: 600, easing: "ease-out" }
  );
}

Il Criterio di Successo WCAG 2.2 2.3.3 raccomanda che l'animazione di movimento attivata dall'interazione possa essere disabilitata. È sempre più un requisito legale.


CSS vs JavaScript vs IA: Scegliere l'Approccio Giusto

CriterioAnimazioni CSSJavaScript (WAAPI/GSAP)IA (VectoSolve)
Complessità setupZero dipendenzeMinima a moderataUpload e configura
PrestazioniEccellentiEccellenti / Molto buoneEccellenti
Valori dinamiciLimitatiControllo totaleDeterminati dall'IA
Morphing percorsiNon supportatoRichiede libreriaIntegrato
Ideale perHover, loop, transizioniInterazioni complesse, data vizPrototipazione rapida

Regola d'oro: Inizia con CSS. Passa a WAAPI quando serve controllo programmatico. Usa GSAP per timeline e morphing. Usa strumenti IA quando serve velocità.


Integrazione Framework: React e Next.js

import { useRef, useEffect } from "react";

function AnimatedIcon({ isActive }) {
  const pathRef = useRef(null);

  useEffect(() => {
    const path = pathRef.current;
    if (!path) return;

    const prefersReduced = window.matchMedia(
      "(prefers-reduced-motion: reduce)"
    ).matches;

    if (prefersReduced) {
      path.style.strokeDashoffset = "0";
      return;
    }

    const length = path.getTotalLength();
    path.style.strokeDasharray = length;
    path.style.strokeDashoffset = length;

    const animation = path.animate(
      [{ strokeDashoffset: length }, { strokeDashoffset: 0 }],
      { duration: 1200, easing: "ease-out", fill: "forwards" }
    );

    return () => animation.cancel();
  }, [isActive]);

  return (
    <svg viewBox="0 0 64 64" role="img" aria-label="Stato">
      <path ref={pathRef} d="M18 44 L26 32 L34 38 L46 20"
        fill="none" stroke="currentColor" strokeWidth="2.5"
        strokeLinecap="round" />
    </svg>
  );
}

Punti Chiave e Prossimi Passi

  1. Inizia con CSS per effetti hover semplici, stati di caricamento e animazioni in loop
  2. Passa alla Web Animations API quando serve controllo dinamico o manipolazione della riproduzione
  3. Adotta GSAP per timeline complesse, animazioni allo scroll e morphing SVG
  4. Considera strumenti IA come l'animatore SVG di VectoSolve per prototipazione rapida
  5. Ottimizza sempre usando proprietà compositor-safe e rispettando prefers-reduced-motion

La migliore animazione SVG è quella che l'utente nota appena — sembra naturale, si carica istantaneamente e si degrada con grazia per chi preferisce la quiete.


ProprietàCompositor (Veloce)Attiva Layout (Lento)
transformSì — accelerato GPUNo
opacitySì — accelerato GPUNo
width / heightNoSì — attiva reflow
top / leftNoSì — attiva reflow
fill / strokeNoSolo repaint (moderato)
Tags:
Animazione SVG
Animazione CSS
Sviluppo web
Motion design
Tutorial
Share:

Try VectoSolve Now

Convert your images to high-quality SVG vectors with AI

AI-Powered Vectorization

Ready to vectorize your images?

Convert your PNG, JPG, and other images to high-quality, scalable SVG vectors in seconds.