Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Svg ViewBox

Alguém poderia me ajudar? estou tentando fazer uma sprite de Svg, mas ao criar tive alguns problemas. Então resolvi fazer exatamente igual ao da aula, mas ocorreu o mesmo problema. Ao criar o arquivo sprite.svg que no caso irá conter:

<svg width="0" height="0" version="1.1" xmlns="http://www.w3.org/2000/svg">
<defs>

<symbol id="mobile" viewBox="0 0 22 33">
    <path d="M17.612 29.584H3.604c-.384 0-.662-.304-.662-.76v-5.51h15.332v5.51c0 .456-.278.76-.662.76zM3.604 2.942h14.008c.384 0 .662.29.662.654v17.396H2.942V3.596c0-.364.278-.654.662-.654zm17.613.697A3.64 3.64 0 0 0 17.577 0H3.64A3.64 3.64 0 0 0 0 3.64v25.24a3.64 3.64 0 0 0 3.64 3.64h13.937a3.64 3.64 0 0 0 3.64-3.64V3.64zM10.837 25h-.175C9.744 25 9 25.783 9 26.75s.744 1.75 1.662 1.75h.175c.92 0 1.663-.783 1.663-1.75S11.756 25 10.837 25"/>
</symbol>

</defs>
</svg>

e adicionei ao meu html a seguinte tag:

<svg><use xlink:href="images/sprite/sprite.svg#mobile"/>

a imagem apareceu corretamento o problema foi o tamanho da mesma, muito grande. Parece não estar pegando o valor do ViewBox.

Anteriormente tinha feito um icone de 35px de largura e altura no IIlustrator e salvei como svg, ao gerar o sprint no gulp estava ocorrendo o mesmo problema, então resolvi fazer exatamente igual ao da aula e mesmo assim continua o mesmo problema.

Consegui resolver adicionando na tag <svg> o style de altura e largura, mas gostaria de saber se há algo que devo adicionar ou alguma outra maneira de ele entender o meu ViewBox da forma correta.

Pois ao adicionar o svg sem sprite na minha página html com a tag o icone aparece no seu tamanho correto e sem problemas.

Qualquer ajuda agradeço! Obrigado!

3 respostas

Não apareceu o conteudo por causa das tags então removi estou repostando os arquivos: sprites.svg: svg width="0" height="0" version="1.1" xmlns="http://www.w3.org/2000/svg" defs

symbol id="mobile" viewBox="0 0 22 33" path d="M17.612 29.584H3.604c-.384 0-.662-.304-.662-.76v-5.51h15.332v5.51c0 .456-.278.76-.662.76zM3.604 2.942h14.008c.384 0 .662.29.662.654v17.396H2.942V3.596c0-.364.278-.654.662-.654zm17.613.697A3.64 3.64 0 0 0 17.577 0H3.64A3.64 3.64 0 0 0 0 3.64v25.24a3.64 3.64 0 0 0 3.64 3.64h13.937a3.64 3.64 0 0 0 3.64-3.64V3.64zM10.837 25h-.175C9.744 25 9 25.783 9 26.75s.744 1.75 1.662 1.75h.175c.92 0 1.663-.783 1.663-1.75S11.756 25 10.837 25" symbol

defs svg

tag no meu html: svg use xlink:href="images/sprite/sprite.svg#mobile"svg

solução!

Acho que você pode tentar colocar os atributos width e height na tag symbol.

Mas em geral eu prefiro encarar o SVG como "sem tamanho" e configurar o tamanho com CSS na hora de usar. Assim posso usar o mesmo ícone em tamanhos diferentes...

Exatamente, isso funciona na imagem, ela fica do tamanho correto se eu adicionar o width e height na tag symbol, mas a tag svg fica do tamanho anterior e desconfigura a página, ou seja a imagem (tag use) fica do tamanho correto mas a tag svg fica "invisível" com o tamanho maior. ai pra resolver tenho que adicionar o width e height na tag svg. Mas tranquilo valeu pela ajuda! :)