2011-08-17 69 views
1

我想絕對定位飄來一些使用此代碼的div:奇怪的行爲時,絕對定位浮動元素

$(function() { 
    $('#wrapper div').each(function(index, item) { 
     alert($(this).position().left); 
     $(this).css({position:'absolute', top:$(this).position().top, left:$(this).position().left}); 
    }); 
}); 

我無法弄清楚究竟是爲什麼當我設置的位置是:絕對$(本) .position()總是返回{top:0,left:0}。我怎樣才能獲得正確的座標,並將位置設置爲絕對?

我已經建立了一個的jsfiddle來說明這個http://jsfiddle.net/SxJCb/4/

回答

2

簡短的回答:

只設置topleft所有div秒。一旦完成,然後設置爲position: absolute所有這些。

參見:http://jsfiddle.net/thirtydot/SxJCb/6/

$('#wrapper div').each(function(index, item) { 
    $(this).css({top:$(this).position().top, left:$(this).position().left}); 
}).css({position:'absolute'}); 

龍答:

所有div s的浮動(這是怎麼回事的說明)。如你所知,每個div被設置爲position: absolute而被從正常流量中移除,所以後面的所有div都被移回了一個地方。因此,第二div移動到第一個是等

這裏是發生了什麼事的慢動作演示:http://jsfiddle.net/thirtydot/SxJCb/7/

+0

我想這可能是類似的東西怎麼回事。感謝您的解釋。完美后,將位置設置爲絕對。 – cbaigorri

0
var x = $("#wrapper div").offset().left; 
var y = $("#wrapper div").offset().top; 

這可以幫助

0

你可能需要設置CSS值時,「PX」追加到頂部的結束和left屬性直。