Ich habe ein SVG-Objekt in meiner HTML-Seite und verpacke es in einen Anker. Wenn Sie auf das SVG-Bild klicken, gelangt der Benutzer zum Ankerlink.
<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>
Wenn ich diesen Codeblock verwende, kann ich durch Klicken auf das SVG-Objekt nicht zu Google wechseln. In IE8 <kann der Bereichstext angeklickt werden.
Ich möchte mein SVG-Bild nicht so ändern, dass es Tags enthält.
Meine Frage ist, wie kann ich das SVG-Bild anklickbar machen?
<img>
mit einem Verweis auf SVG-Daten funktioniert nicht immer wie erwartet, selbst in der neuesten Version von Chrome :( stackoverflow.com/questions/15194870/…<object>
Tag verwenden und ein hinzufügenpoint-event: none;
, um es anklickbar zu machen. Der Zugriff auf Ihren SVG-Quellcode bleibt erhalten, und Sie können ihn dynamisch bearbeiten.img
ist nicht immer eine Option. In meinem Fall muss ich das SVG manipulieren, was nicht richtig gemacht werden kannimg
, ich muss es verwendenobject
.Der beste Weg, dies zu lösen, ist ... Verwenden Sie auf dem <object> -Tag:
Hinweis: Benutzer, auf denen das Ad Blocker-Plugin installiert ist, erhalten beim Bewegen des Mauszeigers in der oberen rechten Ecke einen tabulatorähnlichen [Block] (wie bei einem Flash-Banner). Durch die Einstellung dieses CSS wird auch das verschwinden.
http://jsfiddle.net/energee/UL9k9/
quelle
img
mit svg macht es dann unbrauchbar, interne SVG-Stile zu ändern.Ich hatte das gleiche Problem und konnte es lösen durch:
Umschließen des Objekts mit einem Element, das auf Block oder Inline-Block gesetzt ist
Zum
<a>
Tag hinzufügen:und zum
<span>
Tag:und zum
<object>
Tag:Ein Beispiel finden Sie hier: http://dabblet.com/gist/d6ebc6c14bd68a4b06a6
Gefunden über Kommentar 20 hier https://bugzilla.mozilla.org/show_bug.cgi?id=294932
quelle
Ich würde das gerne würdigen, aber ich habe hier eine Lösung gefunden:
https://teamtreehouse.com/forum/how-do-you-make-a-svg-clickable
Fügen Sie dem CSS für den Anker Folgendes hinzu:
Link arbeitet am SVG und am Fallback.
quelle
Sie können auch so etwas unten in Ihre SVG-Datei einfügen (direkt vor dem schließenden
</svg>
Tag):Dann ändern Sie einfach den Link entsprechend. Ich habe 100% Breite und Höhe verwendet, um das SVG abzudecken, in dem es sich befindet. Der Verdienst für die Technik geht an die intelligenten Leute bei Clearleft.com - dort habe ich sie zum ersten Mal verwendet gesehen.
quelle
Eine Vereinfachung von Richards Lösung. Funktioniert zumindest in Firefox, Safari und Opera:
Weitere Lösungen finden Sie unter http://www.noupe.com/tutorial/svg-clickable-71346.html .
quelle
block
oderinline-block
auf dem Elternteil einstellen<a>
.inline-block
In einigen Fällen musste ich es auch verwenden , aberblock
in anderen Fällen schien es gut zu funktionieren. Ich denke, es hängt von den umschließenden Blöcken ab ...Um dies in allen Browsern zu erreichen, müssen Sie eine Kombination der Methoden @energee, @Richard und @Feuermurmel verwenden.
Hinzufügen:
pointer-events: none;
macht es funktioniert in Firefox.display: block;
bringt es in Chrome und Safari zum Laufen.z-index: 1; z-index: -1;
Damit funktioniert es auch im IE.quelle
object
es sich jetzt in einem niedrigeren Stapelkontext (unter) befindet als der übergeordnete Kontext.Ich habe dies behoben, indem ich auch die SVG-Datei bearbeitet habe.
Ich habe die XML-Datei der gesamten SVG-Grafik in ein Gruppen-Tag eingeschlossen, das ein Klickereignis wie folgt enthält:
Die Lösung funktioniert in allen Browsern, die das Objekt-SVG-Skript unterstützen. (Standardmäßig ein IMG-Tag in Ihrem Objektelement für Browser, die SVG nicht unterstützen, und Sie decken die Bandbreite der Browser ab.)
quelle
<svg>
Element und das Nicht- Umschließen überhaupt nicht funktioniert hat?Ich habe diese saubere, einfache Methode ausprobiert und scheint in allen Browsern zu funktionieren. In der SVG-Datei:
quelle
Nur nicht benutzen
<object>
. Hier ist eine Lösung, die für mich mit<a>
und<svg>
Tags funktioniert hat :quelle
Mach es mit Javascript und füge
onClick
deinemobject
-element ein -attribute hinzu :quelle