Animación SVG para sitios modernos: guía completa para principiantes
Aprende a crear animaciones atractivas y ligeras usando SVG para tu sitio web. Desde simples efectos hover hasta gráficos animados complejos, domina el arte de la animación vectorial.

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
- Las animaciones SVG son hasta un 95 % más ligeras que los equivalentes GIF o video mientras se escalan perfectamente en cualquier dispositivo
- Tres métodos principales de animación: transiciones CSS, SMIL (SVG nativo) y bibliotecas JavaScript como GSAP
-
Respeta siempre
prefers-reduced-motionpara la accesibilidad y proporciona controles de pausa -
Las propiedades aceleradas por GPU (
transform,opacity) ofrecen el rendimiento más fluido a 60fps - Comienza simple con animaciones CSS, luego avanza a bibliotecas JS para movimientos interactivos complejos
Introducción
La animación da vida a los sitios web, captando la atención y guiando a los usuarios en su recorrido. La animación SVG combina la escalabilidad de los gráficos vectoriales con un movimiento fluido y eficiente — creando experiencias atractivas que funcionan perfectamente en cualquier dispositivo.
¿Por qué elegir la animación SVG?
Ventajas sobre otros métodos de animación
Comparado con animaciones GIF:
- Archivos 90 % más pequeños
- Escalabilidad infinita
- Fluidas a cualquier tasa de fotogramas
- Totalmente programables
Comparado con video:
- Sin retrasos de carga
- Posibilidades interactivas
- Texto SEO-friendly
- Fondos transparentes
Comparado con animaciones CSS en imágenes raster:
- Anima elementos individuales
- Control más preciso
- Mejor rendimiento
- Resultados más nítidos
Rendimiento real
Comparación de logos animados:
GIF (60 fotogramas): 850 KB
Video (5 segundos): 1,2 MB
Animación SVG: 45 KB
Mejora del tiempo de carga: 95 %
Pro Tip: Comienza con animaciones CSS para simples efectos hover y transiciones. No requieren JavaScript, funcionan en todas partes y son la opción más eficiente para movimientos básicos.
Métodos de animación SVG
1. Animaciones CSS
El enfoque más simple — usa CSS estándar en elementos SVG.
Rotación básica:
.spin-icon {
animation: rotate 2s linear infinite;
}
@keyframes rotate {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
Efecto hover:
.icon-path {
fill: #333;
transition: fill 0.3s ease;
}
.icon-path:hover {
fill: #1cb721;
}
2. Animación SMIL (SVG nativo)
Integrada directamente en el SVG — sin código externo necesario.
Círculo pulsante:
<svg viewBox="0 0 100 100">
<circle cx="50" cy="50" r="40" fill="#1cb721">
<animate
attributeName="r"
values="35;45;35"
dur="1.5s"
repeatCount="indefinite"/>
</circle>
</svg>
Morphing de trazados:
<path d="M10,10 L90,10">
<animate
attributeName="d"
values="M10,10 L90,10; M10,50 L90,50; M10,10 L90,10"
dur="2s"
repeatCount="indefinite"/>
</path>
3. Animación JavaScript
Máximo control con bibliotecas o JS vanilla.
Bibliotecas populares:
- GSAP (GreenSock): Estándar de la industria, potente
- Anime.js: Ligera, fácil de aprender
- Velocity.js: Sintaxis tipo jQuery
- Lottie: Animaciones de After Effects
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 DealPatrones comunes de animación SVG
Spinners de carga
<svg class="spinner" viewBox="0 0 50 50">
<circle
class="path"
cx="25" cy="25" r="20"
fill="none"
stroke="#1cb721"
stroke-width="4">
</circle>
</svg>
<style>
.spinner {
animation: rotate 1s linear infinite;
}
.path {
stroke-dasharray: 90, 150;
stroke-dashoffset: 0;
animation: dash 1.5s ease-in-out infinite;
}
@keyframes rotate {
100% { transform: rotate(360deg); }
}
@keyframes dash {
0% { stroke-dasharray: 1, 150; stroke-dashoffset: 0; }
50% { stroke-dasharray: 90, 150; stroke-dashoffset: -35; }
100% { stroke-dasharray: 90, 150; stroke-dashoffset: -124; }
}
</style>
Efecto de dibujo de línea
.draw-line {
stroke-dasharray: 1000;
stroke-dashoffset: 1000;
animation: draw 3s ease forwards;
}
@keyframes draw {
to { stroke-dashoffset: 0; }
}
Morphing de iconos
Transforma un icono en otro suavemente:
<svg viewBox="0 0 24 24">
<path id="icon" d="M3,6 L21,6">
<!-- Transformación de icono menú a X -->
<animate
id="toX"
begin="click"
attributeName="d"
to="M4,4 L20,20"
dur="0.3s"
fill="freeze"/>
</path>
</svg>
Elementos rebotantes
.bounce {
animation: bounce 0.5s ease infinite alternate;
}
@keyframes bounce {
from { transform: translateY(0); }
to { transform: translateY(-10px); }
}
Construye tu primera animación SVG
Paso 1: Crea o convierte tu gráfico
Comienza con un gráfico vectorial limpio. Usa VectoSolve para convertir logos o iconos existentes al formato SVG.
Consejos para SVGs listos para animar:
- Organiza elementos en grupos lógicos
- Nombra las capas de forma descriptiva
- Separa los elementos que quieres animar
- Elimina la complejidad innecesaria
Paso 2: Estructura tu SVG para la animación
<svg viewBox="0 0 200 200" class="animated-logo">
<!-- Círculo de fondo -->
<circle class="bg" cx="100" cy="100" r="90"/>
<!-- Elemento icono principal -->
<g class="icon-group">
<path class="icon-part-1" d="..."/>
<path class="icon-part-2" d="..."/>
</g>
<!-- Elemento texto -->
<text class="brand-text" x="100" y="180">Brand</text>
</svg>
Paso 3: Añade la animación CSS
/* Anima al cargar la página */
.animated-logo .bg {
opacity: 0;
animation: fadeIn 0.5s ease forwards;
}
.animated-logo .icon-group {
transform: scale(0);
transform-origin: center;
animation: scaleIn 0.5s ease 0.3s forwards;
}
.animated-logo .brand-text {
opacity: 0;
animation: fadeIn 0.5s ease 0.6s forwards;
}
@keyframes fadeIn {
to { opacity: 1; }
}
@keyframes scaleIn {
to { transform: scale(1); }
}
Paso 4: Prueba y optimiza
- Verifica el rendimiento en móvil
- Controla la fluidez a 60fps
- Prueba con preferencias de movimiento reducido
- Optimiza el tamaño del archivo SVG
"La animación no se trata de hacer que las cosas se muevan — se trata de hacer que se sientan vivas.
Técnicas de animación avanzadas
Animaciones escalonadas
Anima múltiples elementos con retrasos:
.icon-item {
opacity: 0;
animation: slideUp 0.4s ease forwards;
}
.icon-item:nth-child(1) { animation-delay: 0.1s; }
.icon-item:nth-child(2) { animation-delay: 0.2s; }
.icon-item:nth-child(3) { animation-delay: 0.3s; }
.icon-item:nth-child(4) { animation-delay: 0.4s; }
@keyframes slideUp {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
Animación activada por scroll
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add(\'animate\');
}
});
});
document.querySelectorAll(\'.animate-on-scroll\').forEach(el => {
observer.observe(el);
});
Animaciones interactivas
const icon = document.querySelector(\'.interactive-icon\');
icon.addEventListener(\'mouseenter\', () => {
icon.classList.add(\'active\');
});
icon.addEventListener(\'mouseleave\', () => {
icon.classList.remove(\'active\');
});
Free SVG Tools for Crafters
Design Checker · Color Separator · Mat Preview · Offset Generator · Text to SVG
Check Your SVG FreeConsideraciones de accesibilidad
Respetar las preferencias del usuario
@media (prefers-reduced-motion: reduce) {
.animated-element {
animation: none;
transition: none;
}
}
Cerca del 30 % de los usuarios tienen activadas las preferencias de movimiento reducido. Envuelve siempre las animaciones decorativas en una media query prefers-reduced-motion para asegurar que tu sitio sea cómodo para todos.
Proporcionar controles de animación
<button id="toggle-animation">
Pausar animaciones
</button>
<script>
document.getElementById(\'toggle-animation\').onclick = () => {
document.body.classList.toggle(\'no-animation\');
};
</script>
Compatibilidad con lectores de pantalla
<svg role="img" aria-label="Indicador de carga">
<title>Cargando</title>
<!-- Contenido de animación -->
</svg>
Buenas prácticas de rendimiento
Usa transform y opacity
Estas propiedades están aceleradas por GPU:
/* Bien - acelerado por GPU */
.efficient {
transform: translateX(100px);
opacity: 0.5;
}
/* Evitar - causa repintados */
.inefficient {
left: 100px;
width: 200px;
}
Limita los elementos animados
- Anima menos de 30 elementos simultáneamente
- Usa will-change con moderación
- Elimina animaciones fuera de pantalla
Optimiza el SVG antes de animar
- Elimina metadatos innecesarios
- Simplifica trazados
- Usa viewBox correctamente
- Minimiza la precisión decimal
Ejemplos reales
Revelación de logo animado
Un logo que se dibuja al cargar la página:
- Animación de dibujo de línea para trazados
- Fundido para elementos rellenos
- Duración total: 2-3 segundos
- Tamaño del archivo: menos de 50 KB
Iconos de navegación interactivos
Hamburguesa de menú que se transforma en X:
- Morphing de trazados fluido
- Activado al clic
- Animación solo CSS
- Cero JavaScript necesario
Animación de visualización de datos
Gráficos que se animan al hacer scroll:
- Barras que crecen
- Gráficos circulares que se llenan
- Números que cuentan hacia arriba
- Atractivos e informativos
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 DealErrores comunes a evitar
1. Sobre-animar
Demasiado movimiento distrae y puede causar incomodidad.
- Usa la animación con propósito
- Mantén duraciones razonables (0,2-0,5s para micro-interacciones)
- Proporciona controles de pausa
2. Ignorar el rendimiento
Prueba en dispositivos reales, especialmente móvil:
- Monitorea la tasa de fotogramas
- Verifica el impacto en la batería
- Confirma la reproducción fluida
3. Olvidar la accesibilidad
No todos pueden disfrutar las animaciones:
- Respeta prefers-reduced-motion
- Proporciona alternativas
- No transmitas información esencial solo mediante animación
4. Animaciones complejas en rutas críticas
No bloquees la carga de la página con animaciones:
- Difiere las animaciones no esenciales
- Usa estados de carga con criterio
- Prioriza el contenido sobre el movimiento
Herramientas y recursos
Creación de animaciones
- Adobe After Effects + Lottie: Animaciones de calidad profesional
- Figma + GSAP: Workflow de diseño a código
- SVGator: Herramienta de animación SVG online
- Haiku Animator: Animación orientada al diseño
Bibliotecas de código
- GSAP: La más potente, la más usada
- Anime.js: Alternativa ligera
- Motion One: Moderna, eficiente
- Framer Motion: Orientada a React
Recursos de aprendizaje
- Guía SVG de CSS-Tricks
- Centro de aprendizaje de GSAP
- MDN Web Docs animación
- Cursos de Frontend Masters
Conclusión
La animación SVG abre posibilidades creativas manteniendo un excelente rendimiento. Comienza simple con animaciones CSS, luego explora bibliotecas JavaScript para interacciones complejas. Prioriza siempre la accesibilidad y el rendimiento, probando en dispositivos reales.
Con práctica, crearás animaciones que mejoren la experiencia de usuario sin sacrificar la velocidad. Comienza convirtiendo tus gráficos a SVG con VectoSolve, estructúralos para la animación, y da vida a tu sitio web con movimiento fluido y escalable.
| Técnica de animación | Impacto en tamaño | Soporte de navegador |
|---|---|---|
| Transiciones/keyframes CSS | ~0 KB (estilos inline) | Todos los navegadores modernos |
| SMIL <animate> | ~0,5 KB por animación | Todos excepto IE (depreciado en Chrome, reinstalado) |
| Biblioteca GSAP | ~25 KB (minificado + gzipped) | Todos los navegadores modernos |
| Lottie/bodymovin | ~50 KB biblioteca + datos JSON | Todos los navegadores modernos |
| Web Animations API | ~0 KB (nativo) | Todos los navegadores modernos |
Free SVG Tools for Crafters
Design Checker · Color Separator · Mat Preview · Offset Generator · Text to SVG
Check Your SVG FreeFuentes y lecturas adicionales
- MDN Web Docs: Web Animations API — Documentación de la API de animación nativa del navegador y patrones de integración SVG
- CSS-Tricks: A Guide to SVG Animations — Tutoriales paso a paso para animaciones SVG con CSS y SMIL
- web.dev: Rendering Performance — Cómo mantener las animaciones SVG a 60fps con propiedades compatibles con el compositor
- W3C SVG 2 Specification — Especificación oficial de los elementos y atributos de animación SVG