【问题标题】:Vertically aligning a Div using jQuery to set margin-top使用jQuery垂直对齐Div以设置margin-top
【发布时间】:2011-01-18 08:22:15
【问题描述】:

谁能告诉我哪里出错了...我正在使用以下内容通过设置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});
}
});

});

【问题讨论】:

    标签: jquery vertical-alignment


    【解决方案1】:

    我不确定您的实际问题,这就是为什么 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 函数吗?还是它正在执行,但什么也没做?

    【讨论】:

    • 谢谢 Seth - 我正在学习 jQuery,所以很高兴看到我可以如何整理我的代码。我使用 CSS 来解决这个问题 - 添加一个额外的 div 但我会假装我'没见过……马丁
    【解决方案2】:

    你真的不需要使用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 );
    
    }); 
    

    【讨论】:

    • 嘿,谢谢 Mauro - 你是绝对正确的...... CSS 是最好的答案 - 通过在内容之前插入另一个 DIV 并将其高度设置为 50% 并将边距底部设置为我的高度的一半内容 - 完美运行。只是对添加一个新的 div 感到羞耻——我想我可以而且应该使用 jQuery 来做到这一点……但那是另一天!身体{位置:绝对;高度:100%;宽度:100%;} #verticalAlign {高度:50%; margin-bottom:-312px;} 再次感谢! M.
    猜你喜欢
    • 1970-01-01
    • 2014-02-25
    • 2015-04-18
    • 2013-03-01
    • 2011-05-13
    • 2010-11-01
    • 2011-12-21
    • 2012-09-07
    相关资源
    最近更新 更多