Criando experiências com


SVG

Willian Justen


Software Engineer

GloboEsporte

As vezes eu escrevo...

willianjusten.com.br

E faço código open source também...

github.com/willianjusten

Scalable Vector Graphics (SVG)
É uma imagem vetorial no formato XML que suporta interatividade e animações.

Por que vetor?

Devices e mais devices...

Densidade de Pixel

Densidade de Pixel

Mas é só para isso?

Mais motivos para usar SVG

  • Responsivo e Adaptativo
  • Ótimo suporte (até IE8!)
  • Pode ser minificado (GZIP)
  • Interativo e Estilizável
  • Possui efeitos próprios
  • Possui acessibilidade
  • E mais...

Por onde começo?

Criar

Illustrator

Illustrator

Sketch

Sketch

Inkscape

Inkscape

willianjusten.com.br/onde-baixar-svg

Otimização

SVG OMGsSVG OMG

Automação

SVG OMGsSVG-GRUNT-OPTIMIZER

Como funciona?

Estrutura


	

  • SVG: elemento pai que irá conter o desenho
  • Version: versão utilizada para criação
  • xmlns: namespace do svg e sua especificação

Rect


	

Circle


  

Ellipse


  

Line


  

Polyline


  

Polygon


  

Path


  

Veja mais no codepen

Estruturando, agrupando e referenciando

Group

Group

	
	
		
		
		
		
	

Use

Exemplo do Use

Defs


	
		
		
		
		
	
	

Como usar?

Como imagem

Company Logo
  • Imagens podem ser cacheadas.
  • Sem interação de CSS.
  • Sem edição no DOM.
  • Animações só funcionam se estiverem dentro do SVG.

Como background

.logo {
	background-image: url(logo.svg);
}
  • Imagens podem ser cacheadas.
  • Sem interação de CSS.
  • Sem edição no DOM.
  • Animações só funcionam se estiverem dentro do SVG.

Como object


	

  • Imagens podem ser cacheadas.
  • Permite edição no DOM.
  • Possui mecanismo de fallback.
  • Animações só funcionam se estiverem dentro do SVG.

Iframe e Embed




Só não usem isso...

Inline SVG


	

  • Imagens não podem ser cacheadas.
  • Permite edição no DOM.
  • Animações e Interações de CSS.
  • Sem requests HTTP adicionais.

Como estilizar?

Propriedades de estilo

Css compartilhado
Artigo da W3C sobre o assunto

Métodos para Estilizar

Estilo Inline


  

Útil quando não se tem acesso a uma folha de estilo independente ou se deseja fazer uma rápida modificação.

Estilo dentro do SVG


	
	

Útil quando se deseja componentizar um elemento SVG, visto que sua estrutura e todo o seu estilo pode ser facilmente movimentado entre sistemas diferentes.

Estilo no HTML



	

Pouco utilizado, manutenção não muito adequada.

Estilos externos





    

Quando se deseja separar o svg do estilo. Lembrando que podemos fazer chamadas comuns como se fosse css normal, utilizando "link href=style.css"

Demo time!

Imagens Responsivas e Adaptativas

Link no Codepen
Tutorial no blog

Fragment Identifiers

    
        
    
Link no codepen
Tutorial no Blog

Interatividade

Menu Link do Codepen

Animação CSS

Tutorial no Blog
Link do Codepen

Tutorial no Blog
Site do Exemplo

Animações com Smill


Tutorial no blog
Link no codepen

Dasharray e dashoffset

Hover
Link do Codepen

Line Drawing


Link do Codepen

Filtros

Masks e Clip-paths

Patterns

E muito mais!

Quer saber mais? github.com/willianjusten/awesome-svg

Obrigado!

Thanks

Slides:

bit.ly/semcomp-svg