Saya memiliki objek SVG di halaman HTML saya dan saya membungkusnya dengan jangkar sehingga ketika gambar svg diklik, pengguna akan diarahkan ke tautan jangkar.
<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>
Ketika saya menggunakan blok kode ini, mengklik objek svg tidak membawa saya ke google. Di IE8 <teks rentang dapat diklik.
Saya tidak ingin mengubah gambar svg saya mengandung tag.
Pertanyaan saya adalah, bagaimana saya bisa membuat gambar svg dapat diklik?
<img>
dengan referensi ke data svg tidak selalu berfungsi seperti yang Anda harapkan, bahkan di versi terbaru Chrome :( stackoverflow.com/questions/15194870/…<object>
tag dan menambahkannyapoint-event: none;
agar dapat diklik. Ini menjaga akses ke kode sumber svg Anda dan memungkinkan Anda untuk memanipulasinya secara dinamis.img
opsi tidak selalu merupakan pilihan. Dalam kasus saya, saya perlu memanipulasi svg, yang tidak dapat dilakukan dengan benarimg
, saya harus menggunakanobject
.Sebenarnya, cara terbaik untuk menyelesaikan ini adalah ... pada tag <object>, gunakan:
Catatan: Pengguna yang memasang plugin Ad Blocker mendapatkan [Block] seperti tab di sudut kanan atas saat melayang (sama seperti yang didapat oleh spanduk flash). Dengan mengatur css ini, itu akan hilang juga.
http://jsfiddle.net/energee/UL9k9/
sumber
img
dengan svg membuat tidak dapat digunakan untuk mengubah gaya SVG internal.Saya memiliki masalah yang sama dan berhasil menyelesaikannya dengan:
Membungkus objek dengan elemen yang diatur ke blok atau inline-block
Menambahkan ke
<a>
tag:dan ke
<span>
tag:dan ke
<object>
tag:Lihat contoh di sini: http://dabblet.com/gist/d6ebc6c14bd68a4b06a6
Ditemukan melalui komentar 20 di sini https://bugzilla.mozilla.org/show_bug.cgi?id=294932
sumber
Ingin mengambil kredit untuk ini, tetapi saya menemukan solusinya di sini:
https://teamtreehouse.com/forum/how-do-you-make-a-svg-clickable
tambahkan berikut ini ke css untuk jangkar:
Tautan berfungsi pada svg dan pada fallback.
sumber
Anda juga bisa menempelkan sesuatu seperti ini di bagian bawah SVG Anda (tepat sebelum
</svg>
tag penutup ):Kemudian ubah tautannya agar sesuai. Saya telah menggunakan lebar dan tinggi 100% untuk menutupi SVG tempatnya. Kredit untuk teknik ini diberikan kepada orang-orang pintar di Clearleft.com - di situlah saya pertama kali melihatnya menggunakannya.
sumber
Penyederhanaan solusi Richard. Paling tidak berfungsi di Firefox, Safari dan Opera:
Lihat http://www.noupe.com/tutorial/svg-clickable-71346.html untuk solusi tambahan.
sumber
block
atauinline-block
pada induknya<a>
.inline-block
dalam beberapa kasus, tetapiblock
tampaknya bekerja dengan baik pada kasus-kasus lain; Saya kira itu tergantung pada blok terlampir ...Untuk melakukannya di semua browser, Anda perlu menggunakan kombinasi metode @energee, @Richard, dan @Feuermurmel.
Menambahkan:
pointer-events: none;
membuatnya bekerja di Firefox.display: block;
membuatnya berfungsi di Chrome, dan Safari.z-index: 1; z-index: -1;
membuatnya bekerja di IE juga.sumber
object
sekarang akan berada dalam konteks susun yang lebih rendah (di bawah) daripada induknya.Saya menyelesaikan ini dengan mengedit file svg juga.
Saya membungkus xml grafik svg keseluruhan dalam tag grup yang memiliki acara klik sebagai berikut:
Solusi bekerja di semua browser yang mendukung skrip objek svg. (default tag img di dalam elemen objek Anda untuk browser yang tidak mendukung svg dan Anda akan menutupi keseluruhan browser)
sumber
<svg>
elemen luar dan tidak membungkusnya sama sekali tidak berhasil?Saya mencoba metode mudah bersih ini dan tampaknya berfungsi di semua browser. Di dalam file svg:
sumber
Hanya saja, jangan gunakan
<object>
. Inilah solusi yang berfungsi untuk saya<a>
dan<svg>
tag:sumber
Lakukan dengan javascript dan tambahkan
onClick
-atribut ke elemen-Andaobject
:sumber