Flex-grow 似乎没有调整元素的高度
Flex-grow seems to not adjusting height of elements
我希望父元素 app
中的第二个元素 app-item
在空闲 space 时增加高度,这样页脚将始终位于网站底部。但似乎 flex-grow: 1; 不起作用。我应该如何让它工作。在我的其他项目中,它按我的预期工作,但在这里我找不到它不工作的原因。
html, body {
padding: 0;
margin: 0;
}
html{
height: 100%;
}
body{
min-height: 100%;
background-color: #eee;
}
.app{
display: flex;
flex-direction: column;
flex-wrap: wrap;
justify-content: flex-start;
align-content: stretch;
align-items: stretch;
background-color: yellow;
}
.app-item:nth-child(1){
order: 0;
flex: 0 1 auto;
align-self: auto;
background-color: #fdd;
}
.app-item:nth-child(2){
order: 0;
flex: 1 0 0;
align-self: auto;
background-color: #dfd;
}
.app-item:nth-child(3){
order: 0;
flex: 0 1 auto;
align-self: auto;
background-color: #ddf;
}
<html>
<body>
<div class="app">
<div class="app-item">
<nav class="app-item navbar navbar-expand-lg navbar-dark bg-dark" id="navbar">
<div class="container-fluid">
<a class="navbar-brand" href="#">QuoraASoL</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<div class="navbar-nav">
<a class="nav-link" href="#" >Profile</a>
<a class="nav-link " href="#">Logout</a>
<a class="nav-link " href="#">Create Question</a>
<hr>
<a class="nav-link " href="#">Login</a>
<a class="nav-link " href="#">Register</a>
</div>
</div>
</div>
</nav>
</div>
<div id="main-area" class="app-item">
Content block
</div>
<div class="app-item">
<nav class="navbar navbar-dark bg-dark" id="footer">
<div class="container-fluid">
<a class="navbar-brand" href="#">Adventure Side of Life</a>
</div>
</nav>
</div>
</div>
</body>
</html>
您的 .app
容器与其内容一样高,因此内容元素没有 space 增长。
要使 .app
容器与 body 一样高,您可以指定 body
的高度,最小值是整个 window 高度(height: 100%; min-height: 100vh;
), 并使 .app
与 body 一样高 (height: 100%;
).
html, body {
padding: 0;
margin: 0;
}
html{
height: 100%;
}
body{
height: 100%;
min-height: 100vh;
background-color: #eee;
}
.app{
display: flex;
flex-direction: column;
flex-wrap: wrap;
justify-content: flex-start;
align-content: stretch;
align-items: stretch;
background-color: yellow;
height: 100%;
}
.app-item:nth-child(1){
order: 0;
flex: 0 1 auto;
align-self: auto;
background-color: #fdd;
}
.app-item:nth-child(2){
order: 0;
flex: 1 0 0;
align-self: auto;
background-color: #dfd;
}
.app-item:nth-child(3){
order: 0;
flex: 0 1 auto;
align-self: auto;
background-color: #ddf;
}
<html>
<body>
<div class="app">
<div class="app-item">
<nav class="app-item navbar navbar-expand-lg navbar-dark bg-dark" id="navbar">
<div class="container-fluid">
<a class="navbar-brand" href="#">QuoraASoL</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<div class="navbar-nav">
<a class="nav-link" href="#" >Profile</a>
<a class="nav-link " href="#">Logout</a>
<a class="nav-link " href="#">Create Question</a>
<hr>
<a class="nav-link " href="#">Login</a>
<a class="nav-link " href="#">Register</a>
</div>
</div>
</div>
</nav>
</div>
<div id="main-area" class="app-item">
Content block
</div>
<div class="app-item">
<nav class="navbar navbar-dark bg-dark" id="footer">
<div class="container-fluid">
<a class="navbar-brand" href="#">Adventure Side of Life</a>
</div>
</nav>
</div>
</div>
</body>
</html>
我希望父元素 app
中的第二个元素 app-item
在空闲 space 时增加高度,这样页脚将始终位于网站底部。但似乎 flex-grow: 1; 不起作用。我应该如何让它工作。在我的其他项目中,它按我的预期工作,但在这里我找不到它不工作的原因。
html, body {
padding: 0;
margin: 0;
}
html{
height: 100%;
}
body{
min-height: 100%;
background-color: #eee;
}
.app{
display: flex;
flex-direction: column;
flex-wrap: wrap;
justify-content: flex-start;
align-content: stretch;
align-items: stretch;
background-color: yellow;
}
.app-item:nth-child(1){
order: 0;
flex: 0 1 auto;
align-self: auto;
background-color: #fdd;
}
.app-item:nth-child(2){
order: 0;
flex: 1 0 0;
align-self: auto;
background-color: #dfd;
}
.app-item:nth-child(3){
order: 0;
flex: 0 1 auto;
align-self: auto;
background-color: #ddf;
}
<html>
<body>
<div class="app">
<div class="app-item">
<nav class="app-item navbar navbar-expand-lg navbar-dark bg-dark" id="navbar">
<div class="container-fluid">
<a class="navbar-brand" href="#">QuoraASoL</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<div class="navbar-nav">
<a class="nav-link" href="#" >Profile</a>
<a class="nav-link " href="#">Logout</a>
<a class="nav-link " href="#">Create Question</a>
<hr>
<a class="nav-link " href="#">Login</a>
<a class="nav-link " href="#">Register</a>
</div>
</div>
</div>
</nav>
</div>
<div id="main-area" class="app-item">
Content block
</div>
<div class="app-item">
<nav class="navbar navbar-dark bg-dark" id="footer">
<div class="container-fluid">
<a class="navbar-brand" href="#">Adventure Side of Life</a>
</div>
</nav>
</div>
</div>
</body>
</html>
您的 .app
容器与其内容一样高,因此内容元素没有 space 增长。
要使 .app
容器与 body 一样高,您可以指定 body
的高度,最小值是整个 window 高度(height: 100%; min-height: 100vh;
), 并使 .app
与 body 一样高 (height: 100%;
).
html, body {
padding: 0;
margin: 0;
}
html{
height: 100%;
}
body{
height: 100%;
min-height: 100vh;
background-color: #eee;
}
.app{
display: flex;
flex-direction: column;
flex-wrap: wrap;
justify-content: flex-start;
align-content: stretch;
align-items: stretch;
background-color: yellow;
height: 100%;
}
.app-item:nth-child(1){
order: 0;
flex: 0 1 auto;
align-self: auto;
background-color: #fdd;
}
.app-item:nth-child(2){
order: 0;
flex: 1 0 0;
align-self: auto;
background-color: #dfd;
}
.app-item:nth-child(3){
order: 0;
flex: 0 1 auto;
align-self: auto;
background-color: #ddf;
}
<html>
<body>
<div class="app">
<div class="app-item">
<nav class="app-item navbar navbar-expand-lg navbar-dark bg-dark" id="navbar">
<div class="container-fluid">
<a class="navbar-brand" href="#">QuoraASoL</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<div class="navbar-nav">
<a class="nav-link" href="#" >Profile</a>
<a class="nav-link " href="#">Logout</a>
<a class="nav-link " href="#">Create Question</a>
<hr>
<a class="nav-link " href="#">Login</a>
<a class="nav-link " href="#">Register</a>
</div>
</div>
</div>
</nav>
</div>
<div id="main-area" class="app-item">
Content block
</div>
<div class="app-item">
<nav class="navbar navbar-dark bg-dark" id="footer">
<div class="container-fluid">
<a class="navbar-brand" href="#">Adventure Side of Life</a>
</div>
</nav>
</div>
</div>
</body>
</html>