2011-06-13 19 views
0

我有一个div的“position”属性是“绝对的”。为什么jQuery的.position()与css的位置相同?

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

a.animate({top:20}); 

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

a.position().top; 
>>15.243560791015625 

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

编辑:或者我可以问另一个问题。我怎样才能拨打.animate来制作a.position()。top === 20?

编辑2:发现错误。这是“旋转”。

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

+3

.css('position')引用CSS属性。 .position()指向页面上元素的坐标。 – 2011-06-13 21:04:08

+0

是的。但他们为什么不同? – 2011-06-13 21:07:01

+0

当css的位置是“绝对”时,“top”是相对于它最接近定位的祖先的,对吧? .position()会返回一个相对位置到它最近的定位祖先? – 2011-06-13 21:14:21

回答

6

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

+0

我的问题不是关于'.offset()'... – 2011-06-13 21:11:35

+3

@Lai,你甚至读过答案或看链接吗? – canon 2011-06-13 21:16:32

+0

正试图解释你的问题,并且'.position()'是关于'.offset()'的事实。 @antisanity:看起来不是。 – Bojangles 2011-06-13 21:17:22

1

对不起,浪费你的时间...我环顾我的CSS样式,发现问题。

问题是由“旋转”造成的。

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

所以他们是不同的。

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

相关问题