2012-08-14 119 views
0

我想設置一個元素B的元素上A的頂部絕對位置我有絕對位置問題

var left = $('#elementA').offset().left; 

var top = $('#elementA').offset().top; 


--------------------------- 
| -----------   |  
| |o   |   |   
| |   |   | 
| |   |   | 
| |   |   |  
| -----------   | 
|-------------------------- 

O表示我elementA。

我想把元素B相同的位置,A元素

$('elementB').css({ position:'absolute', 
      top:top, 
      left:left}) 


--------------------------- 
| -----------   | 
| |o   |   |  
| | b  |   | 
| |   |   | 
| |   |   | 
| -----------   | 
|-------------------------- 
b means my element b 

但事實證明,像上面。

如果我設置

$('elementB').css({ position:'absolute', 
      top:0, 
      left:0}) 

它會工作。但是我有許多不同的元素B和元素A,我不能對它們全部使用0。

任何人都可以幫到我嗎?非常感謝!

+1

您能否包括您正在使用的HTML內容?元素A和B是否包裹在另一個元素中?如果是這樣,絕對定位與包裝它的元素有關。 – 2012-08-14 18:56:22

+0

我們可以看到一些代碼嗎?對我來說工作非常好:http://jsfiddle.net/uqYSu/ – orhanhenrik 2012-08-14 18:57:44

回答

1

您可以使用jQuery UI的位置插件定位任何元素相對於任何其他元素。請參閱:http://docs.jquery.com/UI/Position

你的情況,那就是:

$('#elementB').position({ 
    my: 'left top', 
    at: 'left top', 
    of: '#elementA' 
}); 

此外,我認爲這是一個很好的做法, 'PX' 添加到CSS屬性的值,例如:

$('...').css({ 
    left: 100 + 'px' 
}); 

你應該總是考慮到如上所述的相對於彼此的元素處置。如果父元素「定位」,那麼子元素將不會相對於窗口定位,而是相對於其父元素。如果你想要更多的靈活性,你可以從元素A中取出元素B(使他們成爲兄弟姐妹)。

0

函數offset()將爲您提供窗口中元素的偏移量。 你需要的是它的容器內的elementA的相對偏移量。

嘗試位置()而不是偏移()基於其他例的

http://jsfiddle.net/dcFXj/

0

當一個元件被另一個元件的子項,絕對定位是沒有真正絕對到窗口,相對於其父母,絕對是。如果你想讓一個div的左上角完全適合它父母的左上角,那麼你希望它的topleft與它的父親完全是零像素。這只是絕對的,因爲它忽略了所有其他可能會將它移出的項目。

Here's a demonstration of that in action

;當B是A的孩子,因爲其中B需要與對齊每一種情況,只是始終設置它的左和頂部爲0