【发布时间】:2017-04-19 22:31:15
【问题描述】:
在我的情况下,我无法将 flex 应用于 body 标签。我可以在不将 css 应用于 body 标签的情况下实现相同的效果(粘性页眉/页脚,flexbox 占据全屏)。这是相关的代码。我注释掉了达到我想要的效果的body css。
谢谢, 马特
/*html {
height: 100%;
}
body {
min-height: 100%;
display: flex;
flex-direction: column;
}
*/
.flex-body {
min-height: 100%;
display: flex;
flex-direction:column;
}
.main {
display: flex;
flex: 1 0 auto;
}
.nav {
flex: 0 0 12em;
}
.content {
flex: 1 0 auto;
display: flex;
flex-direction: column;
}
.row {
display: flex;
flex: 1 0 auto;
flex-direction: row;
}
.col {
flex: 1 0 auto;
}
/* TEMP CODE FOR THIS TEST, REMOVE FOR ACTUAL USE
*/
body {
text-align: center;
}
*{
box-shadow:inset 0px 0px 0px 1px #f00;
}
<div class="flex-body">
<header class="header">
<section class="content">
<div class="row">
<div class="col">
Upper Left
</div>
<div class="col">
Upper Middle
</div>
<div class="col">
Upper Right
</div>
</div>
</section>
</header>
<main class="main">
<nav class="nav">
Nav
</nav>
<section class="content">
<div class="row">
<div class="col">
Upper Left
</div>
<div class="col">
Upper Middle
</div>
<div class="col">
Upper Right
</div>
</div>
<div class="row">
Middle
</div>
<div class="row">
Lower
</div>
</section>
</main>
<footer class="footer">Footer</footer>
</div>
【问题讨论】:
-
Height 和 min-height in percent 仅在父元素具有明确高度时才有效 - 因此,如果您不能指定 body 和 html 的高度,
.flex-body { min-height: 100%; }将不起作用。但你可以试试100vh... -
height:100% 也需要一个具有高度的父级,因此可以计算 % 。这里的身体没有高度。为了工作,您需要:
html,body {height:100%}其中 html 计算窗口浏览器的高度。 .flex-body 可以将此高度用作高度或最小高度。请注意,在这种情况下,IE 的 min-height 存在问题。添加到正文display:flex;flex-direction:column;这里有很多关于这两个的问题