0

要素 A の上に要素 B の絶対位置を設定しようとしています。

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

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


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

oは私の要素Aを意味します。

要素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 を使用することはできません。

誰でもこれについて私を助けることができますか? どうもありがとう!

4

3 に答える 3

1

jQuery UI Positionプラグインを使用して、他の要素を基準にして任意の要素を配置できます。参照:http ://docs.jquery.com/UI/Position

あなたの場合は次のようになります。

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

また、cssプロパティの値に「px」を追加することをお勧めします。例:

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

上記のように、要素の相互の配置を常に考慮に入れる必要があります。親要素が「配置」されている場合、子要素はウィンドウに対してではなく、親に対して配置されます。より柔軟性が必要な場合は、要素Aから要素Bを削除できます(兄弟にします)。

于 2012-08-14T19:12:17.677 に答える
0

関数 offset() は、ウィンドウ内の要素のオフセットを提供します。必要なのは、コンテナ内の elementA の相対オフセットです。

offset() の代わりに position() を試してください

他の例に基づく: http://jsfiddle.net/dcFXj/

于 2012-08-14T18:56:33.327 に答える
0

要素が別の要素の子である場合、絶対配置は実際にはウィンドウに対して絶対的ではなく、その親に対して絶対的です。div の左上隅を親の左上隅と完全に一致させたい場合は、それをtopleftから正確に 0 ピクセル離す必要があります。場所を移動する可能性のある他のすべてのアイテムを無視するため、絶対的なものにすぎません。

これが実際の動作のデモンストレーションです

B が A の子である場合、B を A と揃える必要があるすべての状況で、常に左と上を 0 に設定します。

于 2012-08-14T19:01:24.280 に答える