无法使用 Bootstrap 4 在页眉和页脚之间设置 100% div 高度

kab*_*ice 4 html css twitter-bootstrap bootstrap-4

这篇文章可能听起来像重复,但事实并非如此,请先阅读。

我希望主容器 ( <main role="main" class="container">) 使用 Bootstrap 4 在页眉和页脚之间是全高的。这是我的 html 代码:

// Initialize tooltip component
$(function () {
    $('[data-toggle="tooltip"]').tooltip()
})

// Initialize popover component
$(function () {
    $('[data-toggle="popover"]').popover()
})
Run Code Online (Sandbox Code Playgroud)
.container{
    width: 100%;  min-height: 100% !important;
    min-height:calc(100% - 110px); !important;
    margin: 0 auto -33px; 
    border: solid blue; 
}
Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE html>
<title>My Example</title>

<!-- Latest compiled and minified Bootstrap CSS -->
<head>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
</head>
<body>
<header>
    <nav class="navbar navbar-toggleable-md navbar-inverse bg-inverse fixed-top">
        <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <a class="navbar-brand" href="#" data-placement="right" data-animation="false" data-toggle="tooltip" title="Aller à Mes Summaries">
            My Logo</a>
    </nav>
</header>

<!-- Begin page content -->
<main role="main" class="container">
    <div class="row mt-3" style="border: solid green">
        <div class="col-sm-12 col-md-3" style="border: solid red; height: 200%;">col</div>
        <div class="col-sm-12 col-md-5">col</div>
        <div class="col-sm-12 col-md-4">col</div>
    </div>
</main>

<footer>
    <nav class="navbar navbar-toggleable-md navbar-inverse fixed-bottom bg-inverse" style="height: 10%;">
    </nav>
</footer>


<!-- jQuery library -->
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js" integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script>
Run Code Online (Sandbox Code Playgroud)

我已经用谷歌搜索过了,我已经应用了以下帖子的方法:

还有更多……但在我的情况下没有任何作用。

请帮忙!

dfe*_*enc 6

Flexbox 也是您的朋友。

\n\n
\n

然而,在您继续阅读之前:您不应该再使用已经发布的alphaBootstrap 4 版本!beta 2

\n
\n\n

\r\n
\r\n
.container {\r\n    border: solid blue; \r\n}\r\n\r\nhtml {\r\n    height: 100%;\r\n}\r\nbody {\r\n    display: flex;\r\n    flex-direction: column;\r\n    min-height: 100vh;\r\n}\r\n\r\nmain {\r\n    flex: 1;\r\n    margin-top: 56px;\r\n}\r\n\r\nfooter {\r\n    height: 10vh;\r\n}
Run Code Online (Sandbox Code Playgroud)\r\n
<header>\r\n    <nav class="navbar navbar-toggleable-md navbar-inverse bg-inverse fixed-top">\r\n        <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">\r\n            <span class="navbar-toggler-icon"></span>\r\n        </button>\r\n        <a class="navbar-brand" href="#" data-placement="right" data-animation="false" data-toggle="tooltip" title="Aller \xc3\xa0 Mes Summaries">My Logo</a>\r\n    </nav>\r\n</header>\r\n\r\n\r\n<!-- Begin page content -->\r\n<main role="main" class="container">\r\n    <div class="row mt-3" style="border: solid green">\r\n        <div class="col-sm-12 col-md-3" style="border: solid red; height: 200%;">col</div>\r\n        <div class="col-sm-12 col-md-5">col</div>\r\n        <div class="col-sm-12 col-md-4">col</div>\r\n    </div>\r\n</main>\r\n\r\n<footer>\r\n    <nav class="navbar navbar-toggleable-md navbar-inverse bg-inverse h-100"></nav>\r\n</footer>\r\n\r\n\r\n<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet"/>
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n\n

基本上,这个解决方案创建了body一个弹性容器,其中的项目堆叠在列中。就位后,flex: 1;进行<main>拉伸<main>以填充可用高度并推<footer>入底部。这样.fixed-bottom就不再需要了。

\n\n

更新:\n我已更新上面的标记以符合 Bootstrap 4 beta 2。如下:

\n\n

\r\n
\r\n
html {\r\n    height: 100vh;\r\n}\r\n\r\nbody {\r\n    display: flex;\r\n    flex-direction: column;\r\n    min-height: 100vh;\r\n}\r\n\r\nmain {\r\n    flex: 1;\r\n    margin-top: 56px;\r\n}\r\n\r\nfooter {\r\n    height: 10vh;\r\n}\r\n\r\n.container {\r\n    border: solid blue; \r\n}
Run Code Online (Sandbox Code Playgroud)\r\n
<header>\r\n    <nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">\r\n        <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">\r\n            <span class="navbar-toggler-icon"></span>\r\n        </button>\r\n        <a class="navbar-brand" href="#" data-placement="right" data-animation="false" data-toggle="tooltip" title="Aller \xc3\xa0 Mes Summaries">My Logo</a>\r\n    </nav>\r\n</header>\r\n\r\n<!-- Begin page content -->\r\n<main role="main" class="container">\r\n    <div class="row mt-3" style="border: solid green">\r\n        <div class="col-sm-12 col-md-3" style="border: solid red; height: 200%;">col</div>\r\n        <div class="col-sm-12 col-md-5">col</div>\r\n        <div class="col-sm-12 col-md-4">col</div>\r\n    </div>\r\n</main>\r\n\r\n<footer>\r\n    <nav class="navbar navbar-toggleable-md navbar-inverse bg-dark h-100"></nav>\r\n</footer>\r\n\r\n\r\n<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" rel="stylesheet"/>
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n\n

要将标记从alpha 6to更新beta 2,您必须进行以下更改:重命名.navbar-expand-md.navbar-expand-md.navbar-inverseto.navbar-dark.bg-inverseto .bg-dark

\n


Zim*_*Zim 6

使用较新的 Bootstrap 4.4.x 类重新审视这个问题(不需要额外的 CSS

<div class="d-flex flex-column overflow-hidden min-vh-100 vh-100">
   <header>
        <nav class="navbar navbar-expand-md navbar-dark bg-dark">
            ...
        </nav>
   </header>
   <main role="main" class="flex-grow-1 overflow-auto">
        <div class="container">
            <div class="row mt-3">
                <div class="col-sm-12 col-md-3">
                    Aside
                </div>
                <div class="col"> 
                    Main
                </div>
            </div>
        </div>
   </main>
   <footer class="container-fluid flex-grow-0 flex-shrink-1">
       ...
   </footer>
</div>
Run Code Online (Sandbox Code Playgroud)

结果是全高布局页眉/导航、页脚和中间滚动的主要内容区域。无论页面高度如何,页脚始终位于底部。

https://codeply.com/p/AvV1RvudwC