Tutorial – Animaciones nativas en SVG

Archivado en: SVG tutorial

Si hace unos días en otro post animábamos un SVG a través de CSS con animate.css, hoy vamos a animar nativamente un SVG a través de la propiedad animateTransform.

Para animar nativamente un SVG podemos recurrir a varios métodos o propiedades, podemos ver detalladamente todas las opciones de las que disponemos para animar un SVG en la página de la W3C.

Para animar un SVG a través de animateTransform tenemos a nuestra disposición:

  • translate
  • scale
  • rotate
  • skewX
  • skewY

Y aquí la lista de atributos y propiedades que podemos animar:

  • svg
  • g
  • defs
  • use
  • image
  • switch
  • path
  • rect
  • circle
  • ellipse
  • line
  • polyline
  • polygon
  • text
  • clipPath
  • mask
  • a
  • foreignObject

ROTATE

1
2
3
4
5
6
7
8
9
<animateTransform attributeType="xml"
attributeName="transform"
type="rotate"
from="0 1080 50"
to="360 180 50"
dur="3s"
repeatCount="1"
begin="mouseover"
/>

La rotación del elemento puede ir de 0 a 360 grados, en este caso en el from indicaremos 0 y en to 360, así completaremos toda la rotación. El centro de la rotación estara determinado por el segundo y el tercer valor que tenemos en from y to. En dur indicaremos el tiempo que dura la animación, en este caso 3 segundos. En repeatCount indicaremos cuantas veces queremos que se repita la animación, podemos indicarle segundo y decimales, también la podemos hacer que la animación sea infinita con infinite. Por último en begin le diremos a la animación que solo se iniciara en el momento que el ratón se pose sobre los diferentes elementos que tiene la animación. También disponemos de end para indicarle a la animación cuando debe de terminar.

TRANSLATE

1
2
3
4
5
6
7
8
<animateTransform attributeType="xml"
attributeName="transform"
type="translate"
from="0"
to="360"
dur="3s"
repeatCount="1"
fill="freeze"/>

En esta animación el código es casi idéntico a la anterior, solamente hemos añadido el atributo fill con un valor de freeze, con esto conseguimos parar la animación, si no definimos este atributo la animación volverá a la posición inicial.

SCALE

1
2
3
4
5
6
7
8
<animateTransform attributeType="xml"
attributeName="transform"
type="scale"
from="1"
to="6"
dur="8s"
repeatCount="1"
/>

Con scale lo que conseguimos es escalar el elemento, en este caso le decimos que vaya de 1 a 6 y que la animación dure 8 segundos.

SCALABLE, un libro sobre SVGA lo largo de 15 capítulos, 120 páginas y más de 70 ejemplos vamos a ver todo lo que podemos hacer con SVG. Tu pones el precio, disponible desde 0$ para descargar desde LeanPub(PDF, ePUB y MOBI).