我有这样的代码:
$('#lol').css({ position: "absolute",
marginLeft: 0, marginTop: 0,
top: 0, left: 0});
问题是我的div位于相对位置,所以它是div的0点而不是整个窗口。那是为什么?
答案 0 :(得分:9)
正如其他答案中所指出的,#lol
的至少一个父元素具有position
集,这会导致您的元素位于父元素中。
使用jQuery的解决方案是将元素直接附加到body。
$('#lol').css({
position: "absolute",
marginLeft: 0, marginTop: 0,
top: 0, left: 0
}).appendTo('body');
这将使其显示在窗口的左上角。
答案 1 :(得分:3)
为什么?
如果您想相对于整个窗口使用position: absolute
,则需要确保#lol
没有父元素也位于absolute
,fixed
或relative
。
否则,您指定的任何定位都将相对于它们进行。
答案 2 :(得分:3)
具有position: relative
或position: absolute
的元素将相对于具有position: relative
或position: absolute
的最近父级进行定位。因此,如果您希望元素相对于整个窗口定位,请将其保留在具有相对或绝对位置的任何父包装之外。
答案 3 :(得分:0)
这就是定位的工作原理。如果您有任何指定任何位置的父元素,则绝对定位将相对于它们发生。
如果你想要它到窗口但不能取消任何其他元素的定位,你需要手动或用一些JS从常规页面流中删除该项。
答案 4 :(得分:0)
如果你想在相对于整个窗口屏幕的元素上使用绝对:位置,那么该元素的任何父元素都不应该给出任何位置值,如绝对,固定或相对,因为元素将如果给它任何位置属性,则取相对于其父项的位置。 希望它能很好地回答你...... :)