svg 图像内的自定义区域中的链接不起作用

Posted

技术标签:

【中文标题】svg 图像内的自定义区域中的链接不起作用【英文标题】:Link in custom area inside svg image does not work 【发布时间】:2022-01-20 23:22:17 【问题描述】:

我想在 svg 图像中创建一些链接和悬停效果。因此,我在一个 svg 图像中创建了一些自定义透明区域,在一个在线图像编辑器中,为了做到这一点。但是当我尝试在这些自定义区域中应用一些链接时,如下所示,它不起作用。我怎样才能让它发挥作用?

<body>
  <svg>
      <defs></defs>
      <!-- custom ellipse which the link does not work -->
      <a href="some-link.com">
          <ellipse />  
      </a>

      <!-- normal path from the svg image, which the link work -->
      <a href="some-link.com">
          <path></path>
      </a>

      <!--rest of the image with many paths-->
      <path></path>
  </svg>
</body>

【问题讨论】:

也许许多其他路径之一与椭圆重叠 可能,但在 svg 中,椭圆位于路径之前,如上例所示。你知道我怎样才能让椭圆与其他路径重叠吗? @Marcelo 从代码看来是正确的——问题一定出在其他地方。能否请您提供一些演示或 sn-p,以便我们可以复制问题? 您可以为重叠路径添加 pointer-events="none"。或者,您可以使用 javascript 并使用 svg.appendChild(theA); 在文档末尾附加 【参考方案1】:

ellipse 元素似乎无效。而且由于标记有错误,它甚至可能影响父元素的功能。

自闭合标签的末尾应该有斜线(因为 SVG 基于更严格的 XML),如下所示:

<ellipse />

此更改是否解决了链接问题?

【讨论】:

是的,谢谢。我刚刚解决了这个问题。但这只是实际 svg 图像的示例结构。而且我没有更改svg文件,只是添加了a标签和一些类来检查 @Marcelo 太棒了!那么请您好心把答案添加到这个页面,以便其他有类似问题的人可以从中学习吗? 当然是托马斯!希望尽快找到解决方法 @Marcelo 啊,我的错。我以为你已经解决了整个问题。

以上是关于svg 图像内的自定义区域中的链接不起作用的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的图像马赛克中的自定义维度在 geoserver getmap 请求中不起作用?

片段内的自定义列表不起作用

为啥这个 CSS 转换在锚点内的 SVG 上不起作用

弹出框内的按钮不起作用

链接中的 SVG 跨度在 IE 中不起作用

将快餐栏中的 ImageView 宽度与 Android 中的自定义视图匹配父项不起作用