Como criar animação SVG usando CSS
A animação do SVG pode ser feita por meio de elementos nativos, como
e
. Mas para aqueles que estão mais familiarizados com animação CSS, não se preocupe, nós também podemos usar as propriedades CSS Animation para SVGs animados também.
A Animação CSS também pode ser uma forma alternativa de usar a biblioteca JavaScript, como o SnapSVG. Neste post vamos ver o que podemos oferecer com CSS Animation no SVG.
1. Criando as Formas
Primeiro de tudo, precisaremos desenhar as formas e objetos que queremos animar. Você pode usar aplicativos como Esboço, Adobe Illustrator, ou Inkscape para criar um.
Para este exemplo, eu desenhei um céu nublado como pano de fundo, e um foguete atirando para cima, chamas incluídas:
Uma vez feito o desenho, precisamos exportar cada objeto criado no SVG.
Eu vou usar o Sketch como um exemplo para esta etapa. Selecione o objeto que você deseja transformar em formato SVG. No canto inferior direito da sua janela, clique em Tornar Exportável. Escolha o formato SVG e clique em Exportar object-name. Você precisa fazer esse objeto de cada vez.
2. Insira o SVG em HTML
Quando você abre o arquivo SVG em um editor de código, verá que os códigos SVG são bastante confusos. Assim, antes de implantar o arquivo SVG, vamos arrumar o código e otimizá-lo com esta ferramenta de linha de comando chamada SVGO.
Lançamento terminal ou Prompt de comando, e instale o SVGO com esta linha de comando:
[sudo] npm instalar -g svgo
Tun o comando, svgo
, no arquivo SVG usando --bonita
para produzir código SVG legível:
svgo rocket.svg --pretty
Se você tiver vários SVGs em um diretório, poderá otimizá-los todos juntos, de uma só vez. Supondo que o diretório é nomeado / images, então, a partir do diretório pai, use este comando:
svgo -f imagens --pretty
Vamos ver a diferença antes e depois de usar o SVGO.
Copie o código dentro do arquivo SVG e cole em um arquivo HTML. Vamos trabalhar em um espaço de trabalho de 800px por 600px de largura, então não vamos esquecer de definir o largura
no elemento SVG.
O SVG é definido no arquivo HTML. Vamos precisar definir um ID para cada objeto, para que possamos selecioná-los no CSS mais tarde.
Para este tutorial, precisamos definir o ID para o foguete e as chamas, e algumas das nuvens. Para que os objetos manipulem o estágio de animação mais tarde, precisamos adicionar identidade - você também pode usar classe - para cada objeto. Nesta fase, o código ficará assim:
3. Animar usando CSS
Agora vamos nos divertir. O plano é impulsionar o foguete para o espaço. O foguete é dividido em dois grupos; o foguete em si e a chama.
Primeiro de tudo, posicionamos o foguete no meio do espaço de trabalho, como segue:
#rocket transform: translate (260px, 200px);
O que você vê é isto:
Agora, para fazer o foguete parecer que está subindo, precisamos criar a ilusão de nuvens caindo. O CSS que usamos para isso é:
# cloud1 animação: queda 1s infinita linear; @keyframes fall from transform: translateY (-100px); para transform: translateY (1000px)
Para que pareça ainda mais realista, vamos animar quatro nuvens e torná-las “outono” em diferentes velocidades. Também os posicionaremos diferentemente do eixo X.
A segunda nuvem terá código como este:
# cloud2 animação: queda-2 2s infinito linear; @keyframes fall-2 from transform: translate (200px, -100px); para transform: translate (200px, 1000px)
Note que nós movemos a nuvem # 2 um pouco para a direita, 200 px
com traduzir
. Nesta fase, o resultado deve ficar assim.
Em seguida, vamos fazer o foguete ganhar vida. Atribuiremos um quadro-chave de animação da seguinte maneira:
#rocket animação: popup 1s facilidade infinita; @keyframes popup 0% transformar: traduzir (260 px, 200 px); 50% transform: translate (260px, 240px); 100% transform: translate (260px, 200px);
E adicione animação à chama do foguete também:
#flame animação: agitar .2s infinito linear; @keyframes shake 0% transform: translate (55px, 135px) rotate (7deg); 20% transform: translate (55px, 135px) rotate (0deg); 40% transform: translate (55px, 135px) rotate (-7deg); 60% transform: translate (55px, 135px) rotate (0deg); 100% transform: translate (55px, 135px) rotate (0deg);
Certo! Agora que nossos códigos estão todos definidos, a animação deve estar trabalhando em nosso SVG.
Dê uma olhada no nosso foguete explodindo no espaço.
Pensamento final
A animação não é o recurso mais fácil de entender no CSS. Mas esperamos que você ache este tutorial como um bom ponto de partida para explorar ainda mais a Animação CSS no SVG; Você ficaria surpreso em saber o que pode ser conseguido com CSS Animation na mão.
Se você quiser começar com o básico, você pode começar aqui com este post: Uma olhada em: Scalable Vector Graphics (SVG) Animação ou siga o resto da série SVG.
- Ver demonstração
- Fonte de download