父元素有溢出和边框时的element.offsetTop

时间:2010-03-08 15:10:54

标签: javascript offset

当孩子进入具有溢出和边界的父级时,FF和IE会给出不同的offsetTop。 FF从offsetTop值中减去父级的上边框大小,因此返回一个负值(通常);我认为IE会返回正确的值。

Test it

有一种交叉浏览器方式可以获得相同的值吗?

谢谢。

2 个答案:

答案 0 :(得分:2)

offsetTop属性给出相对于偏移父项的位置。 Fx和IE之间的区别在于它们在这种情况下使用不同的元素作为偏移父元素。

我不知道溢出是如何影响这一点的,我还没有在定义中发现任何相关内容。但是,在IE中存在一个已知的错误,它会使偏移父项错误,并且它可能是您在此处看到的该错误的变体。

答案 1 :(得分:0)

这似乎是自2005年以来一直开放的Firefox中的一个错误。问题似乎是offsetTop没有明确的规范。

https://bugzilla.mozilla.org/show_bug.cgi?id=307502

使用getBoundingClientRect可能有效(对我而言)。

var rect;
rect = el.getBoundingClientRect();
return rect.top;