У меня есть объект 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 кликабельным?
<img>
со ссылкой на данные SVG не всегда работает, как вы ожидаете, даже в последней версии Chrome :( stackoverflow.com/questions/15194870/…<object>
тег и добавить,point-event: none;
чтобы сделать его кликабельным. Он сохраняет доступ к вашему исходному коду svg и позволяет вам динамически манипулировать им.img
не всегда вариант. В моем случае мне нужно манипулировать svg, что не может быть правильно сделано черезimg
, я должен использоватьobject
.На самом деле, лучший способ решить эту проблему - использовать тег <object>:
Примечание. Пользователи, на которых установлен плагин Ad Blocker, при наведении курсора получают вкладку [Блок] в правом верхнем углу (то же, что и флэш-баннер). По настройкам этого css, это тоже пройдет.
http://jsfiddle.net/energee/UL9k9/
источник
img
с svg делает невозможным изменение внутренних стилей SVG.У меня была та же проблема, и мне удалось решить это:
Обтекание объекта элементом, установленным в block или inline-block
Добавление в
<a>
тег:и
<span>
тегу:и
<object>
тегу:Смотрите пример здесь: http://dabblet.com/gist/d6ebc6c14bd68a4b06a6
Найдено через комментарий 20 здесь https://bugzilla.mozilla.org/show_bug.cgi?id=294932
источник
Хотел бы взять кредит на это, но я нашел решение здесь:
https://teamtreehouse.com/forum/how-do-you-make-a-svg-clickable
добавить следующее в CSS для привязки:
Ссылка работает на SVG и запасной вариант.
источник
Вы также можете прикрепить что-то вроде этого в нижней части SVG (прямо перед закрывающим
</svg>
тегом):Затем просто измените ссылку, чтобы удовлетворить. Я использовал 100% ширину и высоту, чтобы покрыть SVG, в которой он находится. Кредит на технику достается умным людям на Clearleft.com - вот где я впервые увидел, что он использовал.
источник
Упрощение решения Ричарда. Работает как минимум в Firefox, Safari и Opera:
См. Http://www.noupe.com/tutorial/svg-clickable-71346.html для дополнительных решений.
источник
block
илиinline-block
на родителя<a>
.inline-block
в некоторых случаях, но,block
похоже, хорошо работает в других случаях; Я думаю, это зависит от вмещающих блоков ...Для этого во всех браузерах вам нужно использовать комбинацию методов @energee, @Richard и @Feuermurmel.
Добавление:
pointer-events: none;
заставляет это работать в Firefox.display: block;
заставляет работать в Chrome и Safari.z-index: 1; z-index: -1;
заставляет это работать в IE также.источник
object
что теперь он будет в более низком стэк-контексте (ниже), чем его родитель.Я решил это, отредактировав файл SVG тоже.
Я обернул xml всей графики svg в групповой тег с событием click следующим образом:
Решение работает во всех браузерах, которые поддерживают объектный SVG-скрипт. (по умолчанию тег img внутри вашего объекта object для браузеров, которые не поддерживают svg, и вы охватите весь спектр браузеров)
источник
<svg>
элементу и полное его отсутствие не работает?Я попробовал этот чистый простой метод и, похоже, работает во всех браузерах. Внутри файла SVG:
источник
Просто не используйте
<object>
. Вот решение , которое работало для меня<a>
и<svg>
теги:источник
Сделайте это с помощью javascript и добавьте
onClick
-attribute к вашемуobject
-element:источник