2012-10-18 186 views
0

我有以下代码:窗口宽度

function c() { 
     var h = ($(window).height() - $('#maincontainer').outerHeight())/2; 
     var w = ($(window).width() - $('#maincontainer').outerWidth())/2; 

     $('#maincontainer').css('position', 'absolute'); 
     $('#maincontainer').css('top', h); 
     $('#maincontainer').css('left', w); 
    } 

    $(window).resize(c); 
    $(window).load(c); 

resize事件上正常工作每一个浏览器我试过,但load总是返回8像素的宽度值,把maincontainer DIV上屏幕的左边界。 这正确执行把一个div仅在IE8窗口上的中间,不能在Chrome 22和Firefox 16

编辑: 似乎解决工作:

$(window).ready(c); 
    $(window).load(c); 
    $(window).resize(c); 

而且,the body应有width: 100%

+0

问题可能是窗口首先加载,在加载任何其他html之前触发事件。 –

+0

这就是我的想法,但我不知道这个解决方法。 –

+0

尝试在'ready'事件上发射而不是。 '$(document).ready(c)' –

回答

1

相反的:

$(window).resize(c); 
$(window).load(c); 

做:

$(function(){ 
    c(); 
    $(window).resize(c); 
}); 

发生了什么事是你求回报面前的文件的大小已加载,所以你得到(几乎)没有。这只要文件“准备就绪”即可,因此可以为您提供更有用的价值。

您可能还需要使您的身体100%的宽度和高度,并使用该大小,而不是窗口。

+0

没有工作。得到了同样的结果。 –

+1

您可能还需要使身体的宽度和高度达到100%,并使用该尺寸代替窗口。 – PhonicUK