用 row/container bootstrap 填充 window 剩余高度

Fill window remaining height with row/container bootstrap

过去 3 天我一直在寻找解决此问题的方法,但毫无结果。

因此,我有一个 HTML 页面必须适合 window,我正在使用 bootstrap 4.1.1。 这个页面很简单:

整个代码大约有 250 行,所以我会尽量写一个我需要的例子:

<body>
<div id="header" class="container-fluid">
   <!--Bootstrap rows and stuffs that actually work well
</div>

<div class="container-fluid">
    <div class="row" id="main-row">    
        <!--FIRST COLUMN: SUMMARY-->
        <div id="menu" class="col-2 box">
            <!--Here i have a navbar menu-->
        </div>

        <!--SECOND COLUMN: CONTENT-->
        <div id="content" class="col-8 box">
           <!--Here i have contents: one video tag and one carousel-->
        </div>

        <!--THIRD COLUMN: DESCRITPION-->
        <div id="description" class="col-2 box">
           <!--Here i some text-->            
        </div>
    </div>
</div>

我只需要整个第二个 container-fluid(或其中的单行)来填充 window 的其余部分,使每一列都保持在该高度。

这是我尝试过的方法:

  1. Body 和 html 高度设置为 100%;
  2. 尝试用一个大容器来装 header 和内容而不是两个
  3. 将第二个容器的高度设置为 100%/inherit/almostTriedEverything:以及 这很奇怪,它实际上设置为 window 高度的 100%,但忽略了 header 高度(所以我还有一个垂直滚动条)
  4. 很多其他的东西,比如 table-like 布局,flex(我想避免它 因为 IE 兼容性)和几乎在网络上找到的所有解决方案

有趣的事实:bootstrap 列完全忽略 body 高度并且它们超过了它的底部限制。

使用卡片组将卡片呈现为具有相同宽度和高度列的单个附加元素。卡片组使用 display: flex;以实现它们的统一尺寸。 https://getbootstrap.com/docs/4.0/components/card/

您也可以像这样创建新的 class .equalhight{display:flex;} 并且可以应用到最上面 div.

这是我的第一个 post。谢谢

如果这对某人有帮助,我已经通过变通方法解决了这个问题。

Bootstrap 几乎不关心高度并保持它们固定(我的意思是,例如,如果 window header 不会调整其高度高度降低)。所以声明 header 高度(在我的例子中,它非常适合)165px 允许我用

计算第二行的高度
height: calc(100vh - 165px);

不是有史以来最好的解决方案,但它有效