Answers:
要设置相对于父级的位置,您需要设置position:relative
父级和position:absolute
元素的
$("#mydiv").parent().css({position: 'relative'});
$("#mydiv").css({top: 200, left: 200, position:'absolute'});
之所以有效,是因为position: absolute;
位置相对于最近定位的父对象(即,具有除default以外的任何position属性的最近的父对象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的setter。但是,如果由于某种原因,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'});
<-不好。显然,如果位置值是string,则必须包含单位,否则它将无效。