【发布时间】:2014-11-17 00:50:45
【问题描述】:
我有一个像这样的普通 SVG 三角形:
<svg width="200px" height="200px" viewBox="0 0 200 200" version="1.1" xmlns="http://www.w3.org/2000/svg">
<polygon id="triangle" fill="#000000" points="100 0 200 200 0 200 "></polygon>
</svg>
当有人将鼠标悬停在 SVG 上时,我正在使用 CSS 平滑过渡其颜色:
#triangle { transition: 1s; }
svg:hover #triangle { fill: orange; }
这适用于所有浏览器。
但现在我想为同一个 SVG 添加可点击的链接功能, 所以我用链接标签包围它:
<a href="http://google.com">
<svg width="200px" height="200px" viewBox="0 0 200 200" version="1.1" xmlns="http://www.w3.org/2000/svg">
<polygon id="triangle" fill="#000000" points="100 0 200 200 0 200 "></polygon>
</svg>
</a>
但现在在 Safari 中,我平滑的颜色过渡中断了。我的 SVG 路径现在可以瞬间改变颜色,而不是原来的一秒钟颜色过渡。
这在 Firefox 或 Chrome 中不会发生。
这是 Safari 中的故障吗?
【问题讨论】:
-
是的,当您将内联 SVG 包装在锚标记中时,过渡会中断。这是 webkit 浏览器和其他浏览器中记录的错误。我已经在几个项目中经历过。解决此问题的一种方法是将其包装在 中并使用 JS 来伪造 href 操作
-
这里是一个相关线程:stackoverflow.com/questions/16846628/… 但我还没有得到嵌入式链接。同样,让 JS 劫持元素的点击是我最好的解决方案。
-
这些是我需要的答案,谢谢!
标签: html css svg hyperlink safari