Eu tenho um objeto SVG na minha página HTML e estou encapsulando-o em uma âncora. Assim, quando a imagem svg é clicada, ele leva o usuário ao link da âncora.
<a href="http://www.google.com/">
<object data="mysvg.svg" type="image/svg+xml">
<span>Your browser doesn't support SVG images</span>
</object>
</a>
Quando eu uso esse bloco de código, clicar no objeto svg não me leva ao google. No IE8 <, o texto da extensão é clicável.
Não quero modificar minha imagem svg para conter tags.
Minha pergunta é: como posso tornar a imagem svg clicável?
<img>
com uma referência a dados SVG nem sempre funciona como você espera, mesmo na versão mais recente do Chrome :( stackoverflow.com/questions/15194870/...<object>
tag e adicionar apoint-event: none;
para torná-la clicável. Ele preserva o acesso ao seu código fonte svg e permite que você o manipule dinamicamente.img
nem sempre é uma opção. No meu caso, eu preciso manipular o svg, que não pode ser feito corretamente viaimg
, eu tenho que usarobject
.Na verdade, a melhor maneira de resolver isso é ... na tag <object>, use:
Nota: Os usuários que possuem o plug-in Bloqueador de anúncios instalado recebem um [Bloco] em forma de tabulação no canto superior direito ao passar o mouse (o mesmo que um banner em flash). Ao definir este css, isso também desaparecerá.
http://jsfiddle.net/energee/UL9k9/
fonte
img
com svg torna inutilizável a alteração dos estilos SVG internos.Eu tive o mesmo problema e consegui resolver isso:
Quebrando o objeto com um elemento definido para bloquear ou bloquear em linha
Adicionando à
<a>
tag:e para a
<span>
tag:e para a
<object>
tag:Veja um exemplo aqui: http://dabblet.com/gist/d6ebc6c14bd68a4b06a6
Encontrado via comentário 20 aqui https://bugzilla.mozilla.org/show_bug.cgi?id=294932
fonte
Gostaria de ter crédito por isso, mas encontrei uma solução aqui:
https://teamtreehouse.com/forum/how-do-you-make-a-svg-clickable
adicione o seguinte ao css da âncora:
O link funciona no svg e no fallback.
fonte
Você também pode colocar algo assim na parte inferior do seu SVG (logo antes da
</svg>
tag de fechamento ):Em seguida, basta alterar o link para se adequar. Eu usei 100% de largura e altura para cobrir o SVG em que ele se encontra. O crédito pela técnica é do pessoal inteligente do Clearleft.com - foi onde eu o vi pela primeira vez.
fonte
Uma simplificação da solução de Richard. Funciona pelo menos no Firefox, Safari e Opera:
Consulte http://www.noupe.com/tutorial/svg-clickable-71346.html para obter soluções adicionais.
fonte
block
ouinline-block
no pai<a>
.inline-block
em alguns casos, masblock
parecia funcionar bem em outros casos; Acho que depende dos blocos anexos ...Para fazer isso em todos os navegadores, você precisa usar uma combinação dos métodos @energee, @Richard e @Feuermurmel.
Adicionando:
pointer-events: none;
faz funcionar no Firefox.display: block;
faz funcionar no Chrome e no Safari.z-index: 1; z-index: -1;
também funciona no IE.fonte
object
agora estará em um contexto de empilhamento menor (abaixo) do que o pai.Eu resolvi isso editando o arquivo svg também.
Embrulhei o xml do gráfico svg inteiro em uma tag de grupo que possui um evento click da seguinte maneira:
A solução funciona em todos os navegadores que suportam o script svg de objeto. (use como padrão uma tag img dentro do elemento do objeto para navegadores que não suportam svg e você cobrirá toda a gama de navegadores)
fonte
<svg>
elemento externo e não envolvê-lo não funcionou?Eu tentei esse método fácil e limpo e parece funcionar em todos os navegadores. Dentro do arquivo svg:
fonte
Só não use
<object>
. Aqui está uma solução que funcionou para mim com<a>
e<svg>
tags:fonte
Faça isso com javascript e adicione um
onClick
atributo ao seuobject
elemento:fonte