我有这样的一段代码:
$('#lol').css({ position: "absolute",
marginLeft: 0, marginTop: 0,
top: 0, left: 0});
问题在于我的div是相对定位的,因此它是一个div的0点而不是整个窗口。为什么会这样?
正如其他答案所指出的那样,#lol
的至少一个父元素设置了 position
属性,这会导致你的元素在父元素中定位。
使用 jQuery 的解决方案是将该元素直接附加到 body。
$('#lol').css({
position: "absolute",
marginLeft: 0, marginTop: 0,
top: 0, left: 0
}).appendTo('body');
这将使其出现在窗口的左上角。
为什么呢?
如果你想使用 position: absolute
相对于整个窗口,你需要确保你的 #lol
没有父元素也设置了 absolute
、fixed
或者 relative
的定位属性。
否则,你指定的任何定位都会相对于它们进行。
具有 position: relative
或 position: absolute
属性的元素将相对于最近的具有 position: relative
或 position: absolute
属性的父元素进行定位。因此,如果您希望元素相对于整个窗口进行定位,请将其放置在没有具有相对或绝对位置的任何父包装器之外。