2012-08-08 82 views
12

我得到的$(el).css('left')$(el).position().left的值是不同的?为什么jQuery .css('left')和.position()。left会返回不同的值?

如果我去$(el).css('left', '100px'),然后$(el).css('left')返回110px而不是100px(是的,这是更始终为10%),如果我评价$(el).position().left,它给了我100

为什么Chrome的行为如此?你可以看到这将如何使用left属性影响jQuery动画。

我在Ubuntu上使用Chrome 21.0.1180.57。

编辑1:似乎只会影响Chrome,FF 14.0.1给了我相同的值。

回答

17

left返回CSS left属性的计算值。

position().left返回相对于元素的第一个偏移父级的x坐标。

这些值为can be equal,它们可以是not equal

position().left也可以很容易地由于不同的渲染而产生different between browsers.css("left")只能以给定的单位不同,如果那样的话。

+0

除了'的.css( “左”)'是不是这样做! http://i.imgur.com/auymh.png在chrome上,'.position()。left'给了我CSS的left属性值。 – 2012-08-08 10:26:13

+0

@GauravDadhania你能告诉我一个jsfiddle吗?在屏幕截图中,它们具有不同的值。一个是1145其他是1040. – Esailija 2012-08-08 11:20:51

+0

嗯,我试图重新创建它,但标记/样式太复杂。然而,最终,将'div.jspDrag'的'position'从'relative'改为'absolute'固定了它!现在,当我使用'.css(“left”)'时,我得到了实际的'left'属性。你知道为什么'位置:亲戚'是罪魁祸首吗? – 2012-08-08 12:55:51

3

试试这个代码:

$("#div")[0].style.left