I have tried to change the images on my site from img
to svg
, changing img
tags to embed
and object
tags. But, implementing the onclick
function, which previously was contained in the img
tag, is proving most difficult.
I found onclick
had no effect when placed inside the object
or embed
tag.
So, I made a div
exclusively for the svg, and placed onclick
in this div
tag. But, no effect unless visitor clicks on the edges/padding of the image.
I have read about overlaying a div
, but am trying to avoid using absolute
positioning, or specifying position
at all.
Is there another way to apply onclick to a svg?
Has anyone encountered this problem? Questions and suggestions are welcome.
The simplest way to make a portion of an SVG clickable is to add an SVG hyperlink element to the markup. This is as easy as wrapping the target with an <a> tag, just as you would a nested html element. Your <a> tag can surround a simple shape or more complex paths. It can surround a group of SVG elements or just one.
SVG's <a> element is a container, which means you can create a link around text (like in HTML) but also around any shape.
You can have an onclick event in the svg itself, I do this all the time in my work. make a rect over the space of your svg, (so define it last, remember svg uses the painters model)
rect.btn { stroke:#fff; fill:#fff; fill-opacity:0; stroke-opacity:0; }
then as an attribute to the rect add the onclick (this can be done with js or jquery as well).
<div> <svg xmlns="http://www.w3.org/2000/svg" version="1.1"> <g> <circle ... //your img svg <rect class="btn" x="0" y="0" width="10" height="10" onclick="alert('click!')" /> </g> </svg> </div>
this will work in almost all browsers: http://caniuse.com/svg
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With