使用Bootstrap 4无法在页眉和页脚之间设置100%div高度 [英] Can't make 100% div height between header and footer with 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()
})
.container{
width: 100%; min-height: 100% !important;
min-height:calc(100% - 110px); !important;
margin: 0 auto -33px;
border: solid blue;
}
<!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>
我已经谷歌搜索,并且已经应用了以下帖子的方法:
还有更多……但是在我的情况下,什么都没有.
请帮助!
Flexbox也是您的朋友.
但是,在继续阅读之前:由于
beta 2
已发布,您不应再使用Bootstrap 4的alpha
版本!
.container {
border: solid blue;
}
html {
height: 100%;
}
body {
display: flex;
flex-direction: column;
min-height: 100vh;
}
main {
flex: 1;
margin-top: 56px;
}
footer {
height: 10vh;
}
<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 bg-inverse h-100"></nav>
</footer>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet"/>
基本上,此解决方案使body
成为一个flex容器,其项目堆叠在列中.将其放置在适当的位置后,将<main>
上的flex: 1;
拉伸<main>
以填充可用高度,然后将<footer>
推入底部.这样,就不再需要.fixed-bottom
.
更新:
我已经更新了上面的标记,以符合Bootstrap 4 beta 2
的要求.如下:
html {
height: 100vh;
}
body {
display: flex;
flex-direction: column;
min-height: 100vh;
}
main {
flex: 1;
margin-top: 56px;
}
footer {
height: 10vh;
}
.container {
border: solid blue;
}
<header>
<nav class="navbar navbar-expand-md navbar-dark bg-dark 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 bg-dark h-100"></nav>
</footer>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" rel="stylesheet"/>
要将标记从alpha 6
更新为beta 2
,您必须进行以下更改:将.navbar-expand-md
重命名为.navbar-expand-md
,将.navbar-inverse
重命名为.navbar-dark
,并且将.bg-inverse
重命名为.bg-dark
.>
This post could sound like a duplicate but it isn't, please read first.
I want the main container (<main role="main" class="container">
) to be full-height between header and footer using Bootstrap 4. Here is my html code :
// Initialize tooltip component
$(function () {
$('[data-toggle="tooltip"]').tooltip()
})
// Initialize popover component
$(function () {
$('[data-toggle="popover"]').popover()
})
.container{
width: 100%; min-height: 100% !important;
min-height:calc(100% - 110px); !important;
margin: 0 auto -33px;
border: solid blue;
}
<!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>
I already googled, and I've applied the methods of the following posts:
- css - Stretch div between header and footer
- css - How to create div to fill all space between header and footer div ...
- html - how to make DIV height 100% between header and footer ...
- html - Content with 100% between header and footer
- css - Make a div fill the height of the remaining screen space - Stack ...
And a lot more… But nothing work in my situation.
Please help!
Flexbox is your friend here too.
However, before you read any further: you should not use the
alpha
version of Bootstrap 4 any more asbeta 2
is out!
.container {
border: solid blue;
}
html {
height: 100%;
}
body {
display: flex;
flex-direction: column;
min-height: 100vh;
}
main {
flex: 1;
margin-top: 56px;
}
footer {
height: 10vh;
}
<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 bg-inverse h-100"></nav>
</footer>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet"/>
Basically this solution makes body
a flex container with it's items stacked in columns. With that in place, flex: 1;
on <main>
stretches <main>
to fill the available height and pushing <footer>
into the bottom. With that .fixed-bottom
is not needed any more.
Update:
I've updated the markup above to conform Bootstrap 4 beta 2
. This is as follows:
html {
height: 100vh;
}
body {
display: flex;
flex-direction: column;
min-height: 100vh;
}
main {
flex: 1;
margin-top: 56px;
}
footer {
height: 10vh;
}
.container {
border: solid blue;
}
<header>
<nav class="navbar navbar-expand-md navbar-dark bg-dark 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 bg-dark h-100"></nav>
</footer>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" rel="stylesheet"/>
To update your markup from alpha 6
to beta 2
you have to make the following changes: rename .navbar-expand-md
to .navbar-expand-md
, .navbar-inverse
to .navbar-dark
and .bg-inverse
to .bg-dark
.
这篇关于使用Bootstrap 4无法在页眉和页脚之间设置100%div高度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!