SVG é a sigla para Scalable Vector Graphics que traduzindo seria gráficos vetoriais escaláveis. SVG é uma linguagem XML para fazer desenhos, gráficos 2D de maneiras estáticas ou dinâmicas a partir de vetores.
A grande vantagem dos gráficos vetoriais é que não se perde a qualidade quando esses gráficos são ampliados (agora lembrei das minhas aulas de CorelDraw).
Outro fato interessante sobre o SVG é que ele é open source e foi criado pela W3C, que também definiu o HTML e o XHTML.
Para desenhar gráficos 2D, formas simples e complexas, ícones, animar formas entre outras coisas. É interessante perceber inclusive, que o SVG é capaz de realizar tantas coisas, que atualmente o canvas é usado em contextos muito específicos.
Um caso real onde utilizei recentemente SVG e um projeto, foi uma tela onde um gráfico com animação estava travando no Android (projeto desenvolvido com Ionic) principalmente. O gráfico foi incialmente desenvolvido com canvas. Eu refiz o gráfico e a animação com SVG e CSS e ficou lindo <3
Existem várias formas de criar um SVG, uma é através de código xml.
Outra forma de escrever SVG é através de softwares capazes de criar, editar e exportar gráficos SVG. Vários são os softwares capazes, os mais conhecidos são: Gimp, Inkscape, Adobe Illustrator e Corel Draw.
Forma básica do SVG, rect é utilizado para criar retângulos a partir da posição de uma borda adicionando sua largura e altura e possibilitando também criar retângulos com bordas arredondadas.
[codepen_embed height=”265″ theme_id=”default” slug_hash=”zYYXLKX” default_tab=”html,result” user=”andrefelizardo”]See the Pen svg_guia-definitivo_01 by Andre Felizardo (@andrefelizardo) on CodePen.[/codepen_embed]
Mais uma forma básica do SVG, usada para criar círculos a partir de um ponto central e um raio.
[codepen_embed height=”265″ theme_id=”default” slug_hash=”ZEEZMVB” default_tab=”html,result” user=”andrefelizardo”]See the Pen svg_guia-definitivo_02 by Andre Felizardo (@andrefelizardo) on CodePen.[/codepen_embed]
Outra forma básica do SVG, usada para criar elipses a partir de uma coordenada central, tanto no eixo horizontal quanto no eixo vertical.
[codepen_embed height=”265″ theme_id=”default” slug_hash=”ZEEZZrQ” default_tab=”html,result” user=”andrefelizardo”]See the Pen svg_guia-definitivo_03 by Andre Felizardo (@andrefelizardo) on CodePen.[/codepen_embed]
O elemento line é uma forma básica do SVG para criar uma linha conectando dois pontos.
[codepen_embed height=”265″ theme_id=”default” slug_hash=”jOORRvE” default_tab=”html,result” user=”andrefelizardo”]See the Pen svg_guia-definitivo_04 by Andre Felizardo (@andrefelizardo) on CodePen.[/codepen_embed]
O elemento polyline ainda é uma forma básica do SVG, porém podemos dizer que já tem um pouco mais de complexidade ao desenhar. Ele é utilizado para desenhar várias linhas retas conectando vários pontos. Normalmente é utilizado para criar formas abertas.
[codepen_embed height=”265″ theme_id=”default” slug_hash=”ZEEZZVp” default_tab=”html,result” user=”andrefelizardo”]See the Pen svg_guia-definitivo_05 by Andre Felizardo (@andrefelizardo) on CodePen.[/codepen_embed]
É o último elemento básico, eu prometo. Ele desenha uma forma fechada através de um conjunto de segmentos de linha reta ligados.
[codepen_embed height=”265″ theme_id=”default” slug_hash=”pooBBBy” default_tab=”html,result” user=”andrefelizardo”]See the Pen svg_guia-definitivo_06 by Andre Felizardo (@andrefelizardo) on CodePen.[/codepen_embed]
Elemento genérico para definir uma forma. Toda as formas básicas poderão ser criadas com path também. Isso o torna um elemento bem completo, e as vezes complexo.
[codepen_embed height=”265″ theme_id=”default” slug_hash=”Pooggvg” default_tab=”html,result” user=”andrefelizardo”]See the Pen svg_guia-definitivo_07 by Andre Felizardo (@andrefelizardo) on CodePen.[/codepen_embed]
O SVG define 6 tipos de comandos para o elemento path, para um total de 20 comandos. Cada comando é composto por uma letra e números que representam os parâmetros de cada comando. Se você não entender tudo de primeira, não se preocupe, pratique. Mantive os termos em inglês pois as letras usadas são abreviações.
Os comandos diferenciam maiúsculas de minúsculas, a diferença é que as letras maiúsculas definem seus valores como posições absolutas e as minúsculas definem pontos em relação a posição atual.
[codepen_embed height=”265″ theme_id=”default” slug_hash=”ZEEZNWK” default_tab=”html,result” user=”andrefelizardo”]See the Pen svg_guia-definitivo_grafico by Andre Felizardo (@andrefelizardo) on CodePen.[/codepen_embed]
[codepen_embed height=”265″ theme_id=”default” slug_hash=”RwwOmgz” default_tab=”html,result” user=”andrefelizardo”]See the Pen svg_guia-definitivo_loading by Andre Felizardo (@andrefelizardo) on CodePen.[/codepen_embed]
Apesar de algumas formas simples o elemento canvas e o elemento svg proporcionarem experiências visuais parecidas, eles não são a mesma coisa.
Canvas foi feito para desenhar de forma programática, ou seja programando através de Javascript. Canvas é desenhado com base em pixel, já o SVG é desenhado com base na forma. SVG pode ser alterado por Javascript e CSS, canvas apenas por Javascript.
Resumo do resumo, canvas deveria ser utilizado principalmente para manipulação de pixels (como colocar bordas em imagens .png), e SVG para desenhar formas gráficas de alta fidelidade, como ícones entre outros. Canvas funciona melhor em uma tela pequena com mais de 10.000 objetos desenhados. Caso contrário SVG vai ter uma performance melhor.
E aí? O que achou do SVG? Você já utiliza? Qualquer dúvida deixa aí nos comentários.
Desvendando o Potencial da Blockchain e Criptomoedas através da Criptografia Em um mundo onde a…
O deploy de uma aplicação React é uma etapa crucial para disponibilizar sua criação na…
Satellite 2020 foi a primeira conferência virtual do Github. O Github já tinha sido liberado…
Neste guia veremos o que são web components, quando usar, sua estrutura e também um…
A alguns anos atrás escrevi um texto sobre o que é o frontend, também palestrei…
Quando você começa a trabalhar com grandes projetos de front-end, os arquivos CSS vão crescendo,…