2012-08-08 83 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