2

谁能告诉我哪里出错了......我正在使用以下内容通过设置margin-top来垂直对齐div,使用(window).height。625 是 Div 居中的高度...

这在 Firefox 中有效,但 IE7 在调整浏览器窗口大小之前不会设置 margin-top。

测试站点位于http://guylloyd.co.uk

任何想法都会非常感激!

马丁

jQuery.noConflict();
jQuery(document).ready(function () {

jQuery(function(){   
var $marginTop = ((jQuery(window).height() - 625) / 2 + 'px');
if(jQuery(window).height() > 625){
jQuery('body').css({'margin-top': $marginTop});   
}
});

jQuery(window).resize(function(){
var $marginTop = ((jQuery(window).height() - 625) / 2 + 'px');
if(jQuery(window).height() > 625){
jQuery('body').css({'margin-top': $marginTop});
}
});

});

4

2 回答 2

1

你真的不需要使用 jquery 来以这种方式布局内容,简单的 css 和 xhtml 可以实现相同的目标。

这可能是一个与 IE6 相同的问题,它会导致 JavaScript 延迟执行,尝试包括超时和对 Seth 设计的代码的调用

function doResize() {   
    var $marginTop = ((jQuery(window).height() - 625) / 2 + 'px');   
    if(jQuery(window).height() > 625){   
        jQuery('body').css({'margin-top': $marginTop});   
    }   
}  
//when document has been fully loaded
jQuery(document).ready(function()
{
    setTimeout('doResize()', 1 );

}); 
于 2010-02-18T14:20:37.943 回答
0

我不确定您的实际问题,这就是为什么 IE7 在您调整窗口大小之前不设置边距,但您可能会考虑减少这样的冗余代码:

function doResize() {
    var $marginTop = ((jQuery(window).height() - 625) / 2 + 'px');
    if(jQuery(window).height() > 625){
        jQuery('body').css({'margin-top': $marginTop});
    }
}

jQuery.noConflict();
jQuery(document).ready(doResize);
jQuery(window).resize(doResize);

至于 IE,如果你在方法中添加一些警告语句会发生什么,这样你就可以知道它们何时被调用。IE7 没有执行 document.ready 函数吗?或者它正在执行,但没有做任何事情?

于 2010-02-18T14:14:43.350 回答