Mam obiekt SVG na mojej stronie HTML i zawijam go w kotwicę, więc po kliknięciu obrazu svg użytkownik przenosi się do łącza kotwicy.
<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>
Kiedy używam tego bloku kodu, kliknięcie obiektu svg nie przenosi mnie do Google. W IE8 <tekst zakresu jest klikalny.
Nie chcę modyfikować mojego obrazu SVG, aby zawierał tagi.
Moje pytanie brzmi: jak mogę sprawić, by obraz SVG był klikalny?
<img>
z odniesieniem do danych svg nie zawsze działa zgodnie z oczekiwaniami, nawet w najnowszej wersji Chrome :( stackoverflow.com/questions/15194870/ ...<object>
tagu i dodać znak,point-event: none;
aby był klikalny. Zachowuje dostęp do kodu źródłowego svg i pozwala na dynamiczne manipulowanie nim.img
nie zawsze jest opcją. W moim przypadku muszę manipulować plikiem SVG, czego nie można; nie można tego poprawnie zrobić za pomocąimg
, muszę użyćobject
.Właściwie najlepszym sposobem rozwiązania tego problemu jest ... na tagu <object> użyj:
Uwaga: Użytkownicy, którzy mają zainstalowaną wtyczkę Ad Blocker, otrzymują po najechaniu kursorem przycisk [Block] podobny do zakładki (tak samo jak w przypadku banera flash). Dzięki ustawieniom tego CSS, to również zniknie.
http://jsfiddle.net/energee/UL9k9/
źródło
img
z svg sprawia, że nie nadaje się do zmiany wewnętrznych stylów SVG.Miałem ten sam problem i udało mi się go rozwiązać poprzez:
Zawijanie obiektu elementem ustawionym na block lub inline-block
Dodawanie do
<a>
tagu:i do
<span>
tagu:i do
<object>
tagu:Zobacz przykład tutaj: http://dabblet.com/gist/d6ebc6c14bd68a4b06a6
Znalezione przez komentarz 20 tutaj https://bugzilla.mozilla.org/show_bug.cgi?id=294932
źródło
Chciałbym się za to pochwalić, ale rozwiązanie znalazłem tutaj:
https://teamtreehouse.com/forum/how-do-you-make-a-svg-clickable
dodaj następujące elementy do css dla kotwicy:
Link działa na svg i na kreacji zastępczej.
źródło
Możesz również przykleić coś takiego na dole swojego SVG (tuż przed zamykającym
</svg>
tagiem):Następnie po prostu dostosuj link, aby pasował. Użyłem 100% szerokości i wysokości, aby zakryć plik SVG, w którym się znajduje. Technika ta jest uznana za mądrych ludzi z Clearleft.com - tam po raz pierwszy zobaczyłem, że została użyta.
źródło
Uproszczenie rozwiązania Richarda. Działa przynajmniej w Firefox, Safari i Opera:
Dodatkowe rozwiązania można znaleźć pod adresem http://www.noupe.com/tutorial/svg-clickable-71346.html .
źródło
block
lubinline-block
na niego<a>
.inline-block
w niektórych przypadkach, aleblock
wydawało się, że działa dobrze w innych przypadkach; Myślę, że to zależy od otaczających bloków ...Aby to osiągnąć we wszystkich przeglądarkach, musisz użyć kombinacji metod @energee, @Richard i @Feuermurmel.
Dodanie:
pointer-events: none;
sprawia, że działa w przeglądarce Firefox.display: block;
sprawia, że działa w Chrome i Safari.z-index: 1; z-index: -1;
sprawia, że działa również w IE.źródło
object
będzie teraz znajdował się w niższym kontekście stosu (pod) niż jego rodzic.Rozwiązałem to również edytując plik SVG.
Umieściłem XML całej grafiki SVG w tagu grupy, który zawiera zdarzenie kliknięcia w następujący sposób:
Rozwiązanie działa we wszystkich przeglądarkach obsługujących skrypt obiektowy svg. (domyślnie tag img w elemencie object w przypadku przeglądarek, które nie obsługują formatu svg, pokryjesz całą gamę przeglądarek)
źródło
<svg>
elementu i nie zawijanie go wcale nie działało?Wypróbowałem tę czystą, łatwą metodę i wydaje się, że działa we wszystkich przeglądarkach. Wewnątrz pliku svg:
źródło
Po prostu nie używaj
<object>
. Oto rozwiązanie, które działało w moim przypadku z tagami<a>
i<svg>
:źródło
Zrób to za pomocą javascript i dodaj
onClick
-attribute do swojegoobject
-elementu:źródło