【问题标题】:How to show tooltip next to the mouse cursor on SVG, despite Non-SVG elements on the website?尽管网站上有非 SVG 元素,如何在 SVG 上的鼠标光标旁边显示工具提示?
【发布时间】:2014-12-13 09:59:50
【问题描述】:

目标: 我有一个网站,其中包含一些内容和 svg 方案。当指向方案的元素时,工具提示应出现在鼠标光标旁边。

问题:基于this(Julian Berger 在How to get the position of SVG element 中展示)等示例,我制作了工作 SVG。不幸的是,它只在 SVG 方案未包含在网站中时才有效。 SVG 以外的内容使 evt.clientX 和 Y 坐标系统失败-> 工具提示开始出现在距光标一定距离的地方(似乎我拥有的其他 SVG 内容越多,工具提示就越远离光标)。简单示例显示为here,只需在实际 SVG 开始之前添加几个<br/>

还有我的问题: 您是否有一些想法如何固定工具提示的位置,使其始终显示在移动光标旁边?

一切顺利, 沃伊泰克

【问题讨论】:

标签: javascript html css svg


【解决方案1】:

您所要做的就是稍微改变一下 mousemove 处理程序。它应该相对于 SVG 的左上角而不是页面来定位工具提示。您可以通过减去 SVG 的位置来做到这一点,我们通过用 <div> 元素包围 SVG 并访问其 offsetLeft 和 offsetTop 属性来获得。

<div id="mysvg">
  <svg>...</svg>
</div>

function ShowTooltip(evt, mouseovertext) {
   svg = document.getElementById("mysvg");
   tooltip.setAttributeNS(null,"x",evt.clientX+11 - svg.offsetLeft);
   tooltip.setAttributeNS(null,"y",evt.clientY+27 - svg.offsetTop);
   ...
}

Full demo here

【讨论】:

  • 感谢您的快速回答,保罗!但是,此解决方案不适用于我的 firefox(Mac OS X 版本 34.0.5,Windows 版本 31.0),其中工具提示窗口冻结在 SVG 图像的左上角。另一方面,它在我的 Chrome 39.0.2171.95、Opera 26.0.1656.32 和 Safari 7.1 上完美运行,但到目前为止我不知道如何为 firefox 修复它..
  • 对不起。看起来 FF 中的 SVG 没有 offsetLeft 和 offsetTop 属性。我已经调整了答案。它现在应该可以在任何地方使用。
猜你喜欢
  • 2019-02-02
  • 1970-01-01
  • 1970-01-01
  • 2022-07-08
  • 1970-01-01
  • 1970-01-01
  • 2015-05-11
  • 2016-10-20
  • 1970-01-01
相关资源
最近更新 更多