сделайте объект HTML svg также кликабельной ссылкой
У меня есть объект SVG на моей HTML-странице и я оборачиваю его в якорь, поэтому при нажатии на изображение svg он переносит пользователя на ссылку якоря.
<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>
когда я использую этот блок кода, щелчок по объекту svg не приведет меня к google. В IE8
Я не хочу изменять мое изображение svg, чтобы содержать теги.
мой вопрос в том, как я могу сделать изображение svg кликабельным?
10 ответов:
на самом деле, лучший способ решить это... в теге
pointer-events: none;
Примечание: пользователи, у которых установлен плагин блокировки рекламы, получают вкладку [блок] в правом верхнем углу при наведении (так же, как и флеш-баннер). По настройкам этого css, это тоже уйдет.
хотел бы взять на себя ответственность за это, но я нашел решение здесь:
https://teamtreehouse.com/forum/how-do-you-make-a-svg-clickable
добавьте в css для якоря следующее:
a.svg { position: relative; display: inline-block; } a.svg:after { content: ""; position: absolute; top: 0; right: 0; bottom: 0; left:0; } <a href="#" class="svg"> <object data="random.svg" type="image/svg+xml"> <img src="random.jpg" /> </object> </a>
ссылка работает на svg и на резервном варианте.
у меня была та же проблема, и мне удалось решить эту проблему:
обертывание объекта элементом, установленным в block или inline-block
<a> <span> <object></object> </span> </a>
добавлять к
<a>
теги:display: inline-block; position: relative; z-index: 1;
и
<span>
теги:display: inline-block;
и
<object>
теги:position: relative; z-index: -1
смотрите пример здесь:http://dabblet.com/gist/d6ebc6c14bd68a4b06a6
найдено через комментарий 20 здесь https://bugzilla.mozilla.org/show_bug.cgi?id=294932
вы также можете вставить что-то вроде этого в нижней части вашего SVG (прямо перед закрытием
</svg>
tag):<a xmlns="http://www.w3.org/2000/svg" id="anchor" xlink:href="/" xmlns:xlink="http://www.w3.org/1999/xlink" target="_top"> <rect x="0" y="0" width="100%" height="100%" fill-opacity="0"/> </a>
тогда просто измените ссылку, чтобы удовлетворить. Я использовал 100% ширину и высоту, чтобы покрыть SVG, в котором он сидит. Кредит для метода идет к умным людям на Clearleft.com -там я впервые увидел, как он используется.
упрощение решения Ричарда. Работает, по крайней мере в Firefox, Safari и Opera:
<a href="..." style="display: block;"> <object data="..." style="pointer-events: none;" /> </a>
см.http://www.noupe.com/tutorial/svg-clickable-71346.html для дополнительных решений.
для этого во всех браузерах необходимо использовать комбинацию методов @energee, @Richard и @Feuermurmel.
<a href="" style="display: block; z-index: 1;"> <object data="" style="z-index: -1; pointer-events: none;" /> </a>
добавляем:
pointer-events: none;
заставляет его работать в Firefox.display: block;
он работает в Chrome и Safari.z-index: 1; z-index: -1;
делает его работать в IE, а также.
Я решил это путем редактирования файла svg тоже.
я завернул xml всей графики svg в тег группы, который имеет событие click следующим образом:
<svg .....> <g id="thefix" onclick="window.top.location.href='http://www.google.com/';"> <!-- ... your graphics ... --> </g> </svg>
решение работает во всех браузерах, поддерживающих объект svg script. (по умолчанию тег img внутри вашего элемента объекта для браузеров, которые не поддерживают svg, и вы будете охватывать гамму браузеров)