Tengo un objeto SVG en mi página HTML y lo estoy envolviendo en un ancla, de modo que cuando se hace clic en la imagen svg, lleva al usuario al enlace del ancla.
<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>
Cuando uso este bloque de código, hacer clic en el objeto svg no me lleva a google. En IE8 <se puede hacer clic en el texto de extensión.
No quiero modificar mi imagen svg para que contenga etiquetas.
Mi pregunta es, ¿cómo puedo hacer que se pueda hacer clic en la imagen svg?
<img>
con una referencia a los datos de svg no siempre funciona como se espera, incluso en la última versión de Chrome :( stackoverflow.com/questions/15194870/…<object>
etiqueta y agregar unpoint-event: none;
para hacer clic. Preserva el acceso a su código fuente svg y le permite manipularlo dinámicamente.img
no siempre es una opción. En mi caso, necesito manipular el svg, que no se puede hacer correctamenteimg
, tengo que usarloobject
.En realidad, la mejor manera de resolver esto es ... en la etiqueta <objeto>, use:
Nota: Los usuarios que tienen instalado el complemento Ad Blocker obtienen un [Bloque] similar a una pestaña en la esquina superior derecha al pasar el mouse (lo mismo que se obtiene con un banner flash). Al configurar este CSS, eso también desaparecerá.
http://jsfiddle.net/energee/UL9k9/
fuente
img
con svg hace que sea inutilizable para cambiar los estilos SVG internos.Tuve el mismo problema y logré resolver esto:
Envolviendo el objeto con un conjunto de elementos para bloquear o bloquear en línea
Agregando a la
<a>
etiqueta:y a la
<span>
etiqueta:y a la
<object>
etiqueta:Vea un ejemplo aquí: http://dabblet.com/gist/d6ebc6c14bd68a4b06a6
Encontrado a través del comentario 20 aquí https://bugzilla.mozilla.org/show_bug.cgi?id=294932
fuente
Me gustaría tomar el crédito por esto, pero encontré una solución aquí:
https://teamtreehouse.com/forum/how-do-you-make-a-svg-clickable
agregue lo siguiente al CSS para el ancla:
Link funciona en el svg y en el respaldo.
fuente
También podría pegar algo como esto en la parte inferior de su SVG (justo antes de la
</svg>
etiqueta de cierre ):Luego solo modifique el enlace para adaptarlo. He usado el 100% de ancho y alto para cubrir el SVG en el que se asienta. El crédito por la técnica es para las personas inteligentes en Clearleft.com, ahí es donde lo vi por primera vez.
fuente
Una simplificación de la solución de Richard. Funciona al menos en Firefox, Safari y Opera:
Consulte http://www.noupe.com/tutorial/svg-clickable-71346.html para obtener soluciones adicionales.
fuente
block
oinline-block
en la matriz<a>
.inline-block
en algunos casos, peroblock
parecía funcionar bien en otros casos; Supongo que depende de los bloques que lo encierran ...Para lograr esto en todos los navegadores, debe usar una combinación de los métodos @energee, @Richard y @Feuermurmel.
Agregando:
pointer-events: none;
lo hace funcionar en Firefox.display: block;
lo hace funcionar en Chrome y Safari.z-index: 1; z-index: -1;
lo hace funcionar en IE también.fuente
object
ahora estará en un contexto de apilamiento más bajo (debajo) que su padre.Resolví esto editando el archivo svg también.
Envolví el xml del gráfico svg completo en una etiqueta de grupo que tiene un evento de clic de la siguiente manera:
La solución funciona en todos los navegadores que admiten script de svg de objeto. (por defecto, una etiqueta img dentro de su elemento de objeto para navegadores que no admiten svg y cubrirá la gama de navegadores)
fuente
<svg>
elemento externo y no envolverlo no funcionó?Probé este método sencillo y limpio y parece funcionar en todos los navegadores. Dentro del archivo svg:
fuente
Simplemente no lo uses
<object>
. Aquí hay una solución que funcionó para mí con<a>
y<svg>
etiquetas:fuente
Hazlo con javascript y agrega un
onClick
atributo a tuobject
elemento:fuente