【问题标题】:Matching div height to combined height of other divs将 div 高度与其他 div 的组合高度匹配
【发布时间】:2014-08-03 05:18:03
【问题描述】:

我正在尝试将背景 div 的高度与前面 div 的组合高度相匹配。我使用了简单的 jQuery 高度函数,它有点工作:

var originalHeight = $("#topbg").height() + $("#menurowbg").height() + $("#headerbg").height() + $("#contentareabg").height() + $("#footerbg").height();
$("#wrapper").height(originalHeight);

问题是,如果调整其中一个 div 的大小以保持匹配,则高度需要动态更改。我试图把 setTimeout 函数,但失败了。我显然错过了一些东西,但无法弄清楚。请帮助这个 jQuery 菜鸟。这是我当前的代码:

var originalHeight = $("#topbg").height() + $("#menurowbg").height() + $("#headerbg").height() + $("#contentareabg").height() + $("#footerbg").height();

setTimeout function checkHeight() {
if(originalHeight < ($("#topbg").height() + $("#menurowbg").height() + $("#headerbg").height() + $("#contentareabg").height() + $("#footerbg").height())) 
{
originalHeight = $("#topbg").height() + $("#menurowbg").height() + $("#headerbg").height() + $ ("#contentareabg").height() + $("#footerbg").height();
}
}, 500);

$("#wrapper").height(originalHeight);

【问题讨论】:

    标签: javascript jquery dynamic height settimeout


    【解决方案1】:

    共有三种情况:

    1) 使用setInterval() 而不是setTimeout() 执行代码每X 毫秒:

    setInterval(function() {
        setContainerSize();
    }, 1000);
    

    示例:http://jsfiddle.net/XWmdL/3/

    2) 包含的 div 是正在调整大小的 div 的父级。在这种情况下,您不必将所有高度相加并重置容器的高度。您可以将容器的宽度和高度属性设置为auto

    #container {
        width: auto;
        height: auto;
    }
    

    示例:http://jsfiddle.net/XWmdL/1/

    3) 如果您的子 div 在窗口大小发生变化时被调整大小,您需要使用$(window).resize() 事件。在以下示例中更改查看窗口大小,您将看到红色背景大小随着黄色 div 的变化而变化。

    例如:http://jsfiddle.net/XWmdL/2/

    希望这会有所帮助!

    【讨论】:

    • 谢谢,但由于需要很长时间才能解释的原因,它不是容器 div。它是一个绝对定位在其余元素后面的 div,所以我不能使用它。
    • 嗯,当窗口大小改变时,“内部” div 的大小是否会被调整?还是其他方式?
    • 我添加到我的答案中。
    • 是的,这些 div 可以调整大小,例如,当其中一个内的 textarea 垂直调整大小并且其容器 div 也随之调整大小时。我看到了您的 jsfiddle 更新,但它不起作用。我只需要一种方法来正确实现 setTimeout 函数来定期检查高度。我原来的 jQuery 可以工作,但不能调整大小。
    • 在这种情况下,我认为您需要 setInterval() 而不是 setTimeout()。请参阅我的回答中的 1)。抱歉,我没有完全理解你想要什么。 :p
    【解决方案2】:

    首先条件错误

     setTimeout function checkHeight() {
    if(originalHeight < (jQuery("#topbg").height() + jQuery("#menurowbg").height() +      jQuery("#headerbg").height() + jQuery("#contentareabg").height() + jQuery("#footerbg").height())) {
    
    originalHeight = jQuery("#topbg").height() + jQuery("#menurowbg").height() + jQuery("#headerbg").height() + jQuery("#contentareabg").height()+jQuery("#footerbg").height();
    
    jQuery("#wrapper").height(originalHeight);
    
    }, 500);
    

    【讨论】:

    • 您的回答对您有什么帮助?正如我原来的帖子中提到的那样,我已经知道这是错误的。我在寻求帮助,而不是批评。
    猜你喜欢
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 2016-09-15
    相关资源
    最近更新 更多