回答:
親に対して相対的な位置を設定するにposition:relativeは、親とposition:absolute要素のを設定する必要があります
$("#mydiv").parent().css({position: 'relative'});
$("#mydiv").css({top: 200, left: 200, position:'absolute'});
これposition: absolute;は、最も近くに配置された親(つまり、デフォルト以外の任意の位置プロパティを持つ最も近い親)に対して相対的に配置するために機能しますstatic。
jQuery UIの.positionメソッドを試すことができます。
$("#mydiv").position({
of: $('#mydiv').parent(),
my: 'left+200 top+200',
at: 'left top'
});
渡された値が文字列型の場合、 'px'(つまり90px)が後に続く必要があることがわかりました。値が整数の場合、pxが自動的に追加されます。widthプロパティとheightプロパティはより寛容です(どちらのタイプでも機能します)。
var x = "90";
var y = "120"
$(selector).css( { left: x, top: y } ) //doesn't work
$(selector).css( { left: x + "px", top: y + "px" } ) //does work
x = 90;
y = 120;
$(selector).css( { left: x, top: y } ) //does work
位置を設定することで私の記憶をリフレッシュし、私はこれに来ているので、他の誰かがそれを見るかどうかわかりませんが-
を使用して位置を設定するのは好きではありませんがcss()、たいていは問題ありません。position()xdazzで指摘されているように、jQuery UIのセッターを使用するのが最善の策だと思います。ただし、jQuery UIが何らかの理由でオプションではない場合(まだjQueryはオプションです)、私はこれを好みます。
const leftOffset = 200;
const topOffset = 200;
let $div = $("#mydiv");
let baseOffset = $div.offsetParent().offset();
$div.offset({
left: baseOffset.left + leftOffset,
top: baseOffset.top + topOffset
});
これには、$divの親を相対的な位置に任意に設定しないという利点があります($divの親が、それ自体、何かの中に絶対的に配置された場合はどうなりますか?)唯一の主要なエッジケースは、$divがないoffsetParent場合、返されるかどうかわからないdocument、null完全に、または何か他のものを。
offsetParent jQuery 1.2.6以降、2008年に利用可能になったため、この手法は現在、元の質問が尋ねられたときに機能します。
のoffset()機能を使用しますjQuery。ここにあります:
$container.offset({
'left': 100,
'top': mouse.y - ( event_state.mouse_y - event_state.container_top )
});
$("#mydiv").css({top: '200px', left: '200px', position:'absolute'});<-良い$("#mydiv").css({top: '200', left: '200', position:'absolute'});<-悪い。明らかに、位置の値が文字列の場合、単位を含める必要があります。そうしないと、効果がありません。