Animando SVG com CSS e SMIL
Adicione movimento a elementos SVG com transições CSS e SMIL.
Animando SVG com CSS e SMIL é uma aula grátis de HTML Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de HTML Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de HTML Academy inclui 4 aulas no total.
Transições CSS em SVG
Os atributos de apresentação do SVG (fill, stroke, opacity e transform) podem ser animados com transições CSS. Adicione uma classe e defina a transição: .icon { transition: fill 200ms ease; } .icon:hover { fill: red; }. As transições CSS funcionam da mesma forma nos elementos SVG.
Animações com @keyframes CSS em SVG
Aplique @keyframes aos elementos SVG: anime stroke-dashoffset para efeitos de desenho de caminhos, opacity para o aparecimento gradual e transform para movimento e rotação. A mesma sintaxe de animação usada nos elementos HTML aplica-se aos elementos SVG sem modificações.
@keyframes draw {
from { stroke-dashoffset: 100; }
to { stroke-dashoffset: 0; }
}
.path { stroke-dasharray: 100; animation: draw 1s ease forwards; }Efeito de desenho de caminho
A técnica com stroke-dasharray e stroke-dashoffset simula o desenho de um caminho: defina dasharray como o comprimento do caminho e dashoffset como o comprimento do caminho (invisível); depois, anime dashoffset até 0. O contorno parecerá desenhar-se do início ao fim.
Obtendo o comprimento do caminho
path.getTotalLength() retorna o comprimento do caminho nas unidades do usuário do SVG. Use esse valor tanto para stroke-dasharray quanto para o stroke-dashoffset inicial. Isso garante que a animação funcione corretamente, independentemente da complexidade ou do comprimento do caminho.
transform CSS em SVG
Os navegadores modernos aceitam transform CSS nos elementos SVG. Em elementos SVG, transform-origin usa como padrão o canto superior esquerdo do SVG, e não o centro do elemento, como ocorre no HTML. Especifique transform-box: fill-box para fazer com que transform-origin seja relativo à caixa delimitadora do elemento.
.spinner {
transform-box: fill-box;
transform-origin: center;
animation: rotate 1s linear infinite;
}Animações SMIL
SMIL (Synchronized Multimedia Integration Language) é o sistema de animação integrado do SVG. O elemento animate altera valores de atributos ao longo do tempo. SMIL não requer JavaScript nem CSS: as animações são totalmente declarativas dentro da marcação 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"> gira um elemento em torno de um ponto central especificado usando a sintaxe SMIL.
animateMotion
<animateMotion> move um elemento ao longo de um caminho SVG. Faça referência a um caminho com mpath ou use dados de caminho embutidos. O elemento segue automaticamente a curva do caminho, o que é útil para trajetórias complexas sem o cálculo manual de coordenadas.
Vantagens e desvantagens de CSS e SMIL
Animações CSS: são compatíveis com todos os navegadores modernos, integram-se à cascata CSS e são mais fáceis de controlar com JavaScript (pausar, inverter). SMIL: fica contido na marcação SVG, funciona em arquivos SVG estáticos sem acesso ao CSS e é declarativo e expressivo para animações que seguem caminhos.
Transformação de caminhos SVG
Anime a transição entre duas formas de caminho: os caminhos precisam ter o mesmo número de comandos e uma estrutura compatível. A animação CSS anima a propriedade d (Chrome 88+, Firefox 72+): @keyframes { to { d: path("M...") } } para transformação nativa de caminhos com CSS.
Acessibilidade para animações SVG
Adicione a consulta de mídia prefers-reduced-motion para desativar ou simplificar as animações SVG para usuários que se sentem desconfortáveis com movimento. Animações decorativas devem ser totalmente desativadas; animações significativas, como estados de carregamento, devem ser simplificadas em vez de interrompidas.
Verificação de conhecimentos
Como a técnica com stroke-dasharray e stroke-dashoffset cria uma animação de desenho de caminho?
Resumo
A animação SVG usa transições CSS e @keyframes para efeitos baseados em propriedades, a técnica com stroke-dasharray/dashoffset para desenhar caminhos, animate/animateTransform/animateMotion do SMIL para animações declarativas dentro do SVG e prefers-reduced-motion para acessibilidade. CSS e SMIL são complementares: escolha com base na necessidade de integração com a cascata CSS ou de portabilidade do arquivo independente.
Perguntas Frequentes
A aula “Animando SVG com CSS e SMIL” é grátis?
Sim — o texto completo de “Animando SVG com CSS e SMIL” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de HTML Academy, atualize para CoddyKit PRO. O curso de HTML Academy inclui 4 aulas no total.
O que vou aprender em “Animando SVG com CSS e SMIL”?
Adicione movimento a elementos SVG com transições CSS e SMIL. Você pratica HTML Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar HTML Academy?
Nenhuma experiência prévia é necessária. HTML Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Animando SVG com CSS e SMIL”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de HTML Academy?
Sim. Cada aula de HTML Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- SVG em linha versus img e object
- Formas básicas de SVG: rect circle path
- viewBox do SVG e dimensionamento responsivo
- Animando SVG com CSS e SMIL