Uma foto minha vestido com o uniforme da Grifinória do Harry Potter

Willian JustenSoftware Engineer

Instrutor na Udemy, escrevo sobre o mundo front end, viagens, vida pessoal e mais.

← Voltar na listagem

Criando um loader animado em SVG

Aprenda a criar um loader com uma animação única em SVG com apenas poucas linhas.

Introdução

Faaaaaala pessoal, quanto tempo não escrevo aqui e hoje eu venho trazer um post um pouco diferente para vocês, com um vídeo do meu Curso de SVG do Início ao Avançado. Nesse vídeo eu explico como fazer uma das coisas mais legais do SVG, que é trabalhar com as propriedades de stroke do SVG. Mas também mostro um pouquinho sobre como construir uma forma geométrica e outras coisinhas mais que temos no SVG.

Vídeo

Detalhes

Se você quiser ver na prática ao invés de só no vídeo, segue o link da demo.

Como visto no vídeo, primeiro a gente precisa criar um triângulo, definindo um svg com sua viewbox. Se quiser, tem um post sobre a estrutura do SVG onde você pode ler mais sobre também. E o código fica:

<svg width="200" height="200" viewBox="0 0 40 60">
  <polygon
    class="triangle"
    fill="none"
    stroke="#fff"
    stroke-width="1"
    points="16,1 32,32 1,32"
  />
</svg>

Depois disso, nós precisamos criar a nossa animação usando as propriedades stroke-dasharray e stroke-dashoffset, você pode ler mais nesse post sobre o efeito de desenhar com SVG. E unida a essas duas propriedades, precisamos usar o keyframes para criar a animação.

.triangle {
  stroke-dasharray: 17;
  animation: dash 2.5s cubic-bezier(0.35, 0.04, 0.63, 0.95) infinite;
}
@keyframes dash {
  to {
    stroke-dashoffset: 136;
  }
}

Por fim, basta adicionar o texto de loading e posicioná-lo em nosso SVG.

<svg width="200" height="200" viewBox="0 0 40 60">
  <polygon
    class="triangle"
    fill="none"
    stroke="#fff"
    stroke-width="1"
    points="16,1 32,32 1,32"
  />
  <text class="loading" x="0" y="45" fill="#fff">Loading...</text>
</svg>

E fazer a animação dele utilizando a opacidade para que ele fique piscando.

.loading {
  font-family: 'Orbitron', sans-serif;
  font-size: 7px;
  animation: blink 0.9s ease-in-out infinite;
}
@keyframes blink {
  50% {
    opacity: 0;
  }
}

Conclusão

Bom galera, é só isso! Bem simples de fazer uma animação utilizando o SVG e você consegue um efeito que não veria usando só CSS/JS. Se você gostou do vídeo e da explicação, aproveita e faz o curso completo de SVG de graça no YouTube