为什么jquery的.position()与css的位置不一样?

时间:2011-06-13 21:01:06

标签: javascript jquery css

我有一个div,其中“position”属性是“绝对的”。

var a = $(div).first();

a.animate({top:20});

a.css("top");
>>"20px"

a.position().top;
>>15.243560791015625

发生什么事了? .position()给了我相对于第一个定位祖先的位置。它不会和css的位置相同吗?

编辑:或者我可能会问另一个问题。如何调用.animate来制作a.position()。top === 20?

Edit2 :发现错误。它是“旋转”。

Edit3 :出于某种原因,jQuery UI插件的回调中的ui.position()工作为.css("top"),而不是.position()。虽然他们有相同的名字。

2 个答案:

答案 0 :(得分:6)

jQuery的position是相对于偏移的父(source)。使用jQuery的offset是相对于文档(source),如果你的元素有一个固定的位置,它应该产生相同的数字

答案 1 :(得分:1)

抱歉浪费你的时间......我环顾了我的css风格,发现了问题。

问题是由“旋转”引起的。

当一个元素被旋转时,它的.position()会被改变,但不会被改变。

所以他们是不同的。

无论如何,谢谢大家的答案。