Animar SVG con CSS y SMIL
Añada movimiento a elementos SVG con transiciones CSS y SMIL
Animar SVG con CSS y SMIL es una lección gratuita de HTML Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de HTML Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de HTML Academy incluye 4 lecciones en total.
Transiciones CSS en SVG
Los atributos de presentación de SVG (fill, stroke, opacity, transform) se pueden animar mediante transiciones CSS. Añada una clase y defina la transición: .icon { transition: fill 200ms ease; } .icon:hover { fill: red; }. Las transiciones CSS funcionan de la misma forma en los elementos SVG.
Animaciones CSS con fotogramas clave en SVG
Aplique @keyframes a los elementos SVG: anime stroke-dashoffset para crear efectos de trazado de rutas, opacity para apariciones graduales y transform para movimientos y rotaciones. La misma sintaxis de animación que se utiliza con elementos HTML se aplica a los elementos SVG sin modificaciones.
@keyframes draw {
from { stroke-dashoffset: 100; }
to { stroke-dashoffset: 0; }
}
.path { stroke-dasharray: 100; animation: draw 1s ease forwards; }Efecto de trazado de una ruta
La técnica de stroke-dasharray y stroke-dashoffset simula el trazado de una ruta: establezca dasharray con la longitud de la ruta y dashoffset con esa misma longitud (invisible); después, anime dashoffset hasta 0. El trazo parece dibujarse desde el principio hasta el final.
Obtener la longitud de una ruta
path.getTotalLength() devuelve la longitud de la ruta en unidades de usuario de SVG. Utilice este valor tanto para stroke-dasharray como para el valor inicial de stroke-dashoffset. Así se garantiza que la animación funcione correctamente independientemente de la complejidad o la longitud de la ruta.
transform de CSS en SVG
Los navegadores modernos admiten transform de CSS en elementos SVG. En los elementos SVG, transform-origin toma de forma predeterminada la esquina superior izquierda del SVG, no el centro del elemento como en HTML. Especifique transform-box: fill-box para hacer que transform-origin sea relativo al cuadro delimitador del elemento.
.spinner {
transform-box: fill-box;
transform-origin: center;
animation: rotate 1s linear infinite;
}Animaciones SMIL
SMIL (Synchronized Multimedia Integration Language) es el sistema de animación integrado de SVG. El elemento animate cambia los valores de los atributos con el paso del tiempo. SMIL no requiere JavaScript ni CSS: las animaciones son completamente declarativas dentro del marcado SVG.
<circle r="20">
<animate attributeName="r" from="20" to="40" dur="1s" repeatCount="indefinite"/>
</circle>animateTransform
<animateTransform attributeName="transform" type="rotate" from="0 50 50" to="360 50 50" dur="2s" repeatCount="indefinite"> rota un elemento alrededor de un punto central especificado mediante la sintaxis de SMIL.
animateMotion
<animateMotion> mueve un elemento a lo largo de una ruta SVG. Haga referencia a una ruta mediante mpath o incluya sus datos directamente. El elemento sigue automáticamente la curva de la ruta, lo que resulta útil para crear trayectorias de movimiento complejas sin calcular manualmente las coordenadas.
Ventajas y desventajas de CSS frente a SMIL
Animaciones CSS: son compatibles con todos los navegadores modernos, se integran con la cascada de CSS y son más fáciles de controlar mediante JavaScript (pausar, invertir). SMIL: está contenido en el marcado SVG, funciona en archivos SVG estáticos sin acceso a CSS, y es declarativo y expresivo para animaciones que siguen rutas.
Interpolación de rutas SVG
Anime la transición entre dos formas de ruta: las rutas deben tener el mismo número de comandos y una estructura compatible. La animación CSS anima la propiedad d (Chrome 88+, Firefox 72+): @keyframes { to { d: path("M...") } } para interpolar rutas de forma nativa con CSS.
Accesibilidad de las animaciones SVG
Añada la consulta de medios prefers-reduced-motion para desactivar o simplificar las animaciones SVG para las personas a quienes el movimiento resulte incómodo. Las animaciones decorativas deben desactivarse por completo; las animaciones relevantes, como los estados de carga, deben simplificarse en lugar de detenerse.
Comprobación de conocimientos
¿Cómo crea la técnica de stroke-dasharray y stroke-dashoffset una animación de trazado de una ruta?
Resumen
La animación SVG utiliza transiciones CSS y fotogramas clave para crear efectos basados en propiedades, la técnica de stroke-dasharray/dashoffset para trazar rutas, SMIL animate/animateTransform/animateMotion para crear animaciones declarativas dentro de SVG y prefers-reduced-motion para mejorar la accesibilidad. CSS y SMIL son complementarios: elija uno u otro según necesite integrar la cascada de CSS o mantener la portabilidad de un archivo independiente.
Preguntas frecuentes
¿La lección «Animar SVG con CSS y SMIL» es gratis?
Sí — el texto completo de «Animar SVG con CSS y SMIL» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de HTML Academy, actualiza a CoddyKit PRO. El curso de HTML Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Animar SVG con CSS y SMIL»?
Añada movimiento a elementos SVG con transiciones CSS y SMIL Practicas HTML Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar HTML Academy?
No se requiere experiencia previa. HTML Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Animar SVG con CSS y SMIL»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de HTML Academy?
Sí. Cada lección de HTML Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- SVG en línea frente a img y object
- Formas SVG básicas: rect, circle y path
- viewBox de SVG y escalado adaptable
- Animar SVG con CSS y SMIL