Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在滚动后将div放置在窗口的中心_Javascript_Html_Css - Fatal编程技术网

Javascript 如何在滚动后将div放置在窗口的中心

Javascript 如何在滚动后将div放置在窗口的中心,javascript,html,css,Javascript,Html,Css,我有一个div,它应该是窗口的中心,即使在滚动之后。如何实现 您可以将固定宽度放置在中间,并使用一半宽度一半高度的负边距。因此,对于id为且大小为200x200的_div的div,您应该执行以下操作: #your_div { width: 200px; height: 200px; position: fixed; top: 50%; left: 50%; margin-left: -100px; margin-top: -100px; }

我有一个div,它应该是窗口的中心,即使在滚动之后。如何实现


您可以将固定宽度放置在中间,并使用一半宽度一半高度的负边距。因此,对于id为
且大小为200x200的_div
的div,您应该执行以下操作:

#your_div {
    width: 200px;
    height: 200px;
    position: fixed;
    top: 50%;
    left: 50%;
    margin-left: -100px;
    margin-top: -100px;
}

如果您必须支持IE6,那么您必须将div元素附加到主体中,并将位置设置为“绝对”。将body元素的position属性设置为“relative”。并应用reko_t建议的其他样式。滚动时,应将div保持在中间

除此之外,我建议你在你想把一些div放在页面的中心时再考虑一个例子。如果视口的大小小于放置在中心的div,则滚动时,最终将看到div的相同部分,直到将窗口调整为大于div


要解决这个问题,您应该使用javascript解决方案,而不是纯css解决方案。您应该定义一个窗口调整侦听器。如果已调整大小的窗口的视口较小,则将div定位在视口的左上角,并禁用onscroll侦听器。如果已调整大小的窗口的视口大于div,则onscroll侦听器应应用reko_\t建议的样式

我自己也在查这篇文章,这篇文章最先出现。通过进一步研究,我发现了这个链接,我认为它是最好的跨浏览器解决方案:

基本上,要使用jquery解决IE6问题,只需考虑$(window).scrollTop()和$(window).scrollLeft()即可

希望这有帮助


史蒂夫

我建议以下解决方案:

1) 在JS中,当您要显示窗口时:

{
var width = $(window).width();
var heigth = $(window).height();
var myWindow = $('.my-window');
    myWindow .show('fast');
    myWindow .offset(
    {
        left: (width - myWindow .width()) / 2 + $(window).scrollLeft(),
        top: (heigth - myWindow .height()) / 2 + $(window).scrollTop()
    });
}
2) 在CSS中: .我的窗户

{
    position: fixed;
}

在IE6()@kouPhax中,“fixed”不是一个受支持的位置值。我们不应该为IE6创建网站,那么就没有人会使用它,我们也不会有今天这么多的问题。我们完全不同意这一说法。MS仍承诺在2013年之前支持IE6,因此在公司环境被迫升级之前,IE6不会“消失”。为什么你要阻碍近20%的访客()只是为了表明立场?向他们发泄是公平的吗?@reko_t:成功了……谢谢,现在是2014年的中期;我们能放弃IE6吗?