【发布时间】:2012-03-26 11:42:13
【问题描述】:
我想在用户单击 SVG 图表中的元素时显示叠加层(html div)。为了可视化我遇到的问题,假设 SVG 图像具有 6 个元素的水平行。在单击事件中,我获取元素的坐标并使用它们在其旁边显示叠加层。问题是当我从左到右单击元素时,我注意到元素和叠加层之间的水平偏移越来越小。也就是说,第 6 个元素显示的叠加层比第一个元素更接近它。这在 Chrome 和 FF 中都会发生,这是一个问题,因为有时覆盖层会覆盖元素本身。
起初我使用的是 JQuery 的 position() 属性,它没有表现出我上面描述的行为,但它在 Chrome 和 Firefox 中返回的值非常不同,而且 JQuery 在 svg 元素上没有正式支持它。所以我尝试了 DOM 的标准 offsetLeft 和 offsetTop,以及 svg 的 x.animVal.value 属性和我在网上找到的各种库,但它们都有相同的不稳定偏移问题。我认为发生这种情况是因为 svg 图像被缩放,所以我正在寻找一种方法来获取相对于包含它的实际 html 文档的 svg 元素位置。有没有办法做到这一点?
【问题讨论】:
标签: javascript jquery html dom svg