Firefox中的SVG偏移问题

时间:2013-03-26 04:02:11

标签: jquery svg jquery-svg

在Firefox 12.0或更高版本中,.offset().position()在SVG(根)元素上调用时返回意外值。

结果值是“左”组件中最左边的子组件的x-coord和“top”组件中最顶级子组件的y-coord。

$(this.SvgObject).offset().left / $(this.SvgObject).offset().top

在firefox中返回非预期值。

但是当我得到父偏移量时,它会给出正确的值(即):

$(this.SvgObject).parent().offset().left 

但这不是正确的方法。

请参阅this bug report。他们回复说:

  

“不幸的是,我们不打算在短期内修复与SVG相关的错误:”

如何在SVG中解决此问题?

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,我在开始绘制Raphael图之前创建了一个假边界,解决了这个问题。

// adding following rect just to set the boundary of svg element (firefox)
paper.rect(0,0,paperWidth,paperHeight,0).attr({stroke: "#fff"});

答案 1 :(得分:0)

您可以使用:

var svg = $(this.SvgObject),
    po = svg.offsetParent().offset(),

    left = po.left + parseInt(svg.css("left"), 10),
    top = po.top + parseInt(svg.css("top"), 10);