https://jsfiddle.net/vz7cLmxy/
我试图让身体扩张,但最小高度不起作用。我已经阅读了其他相关主题,但无法理解它。
CSS和HTML
body,
html {
padding: 0;
margin: 0;
min-height: 100%;
}
body {
display: flex;
background: #eee;
flex-direction: column;
}
.menu {
background: red;
color: #fff;
padding: 10px;
}
.wrap {
display: flex;
}
.sidebar {
background: #ddd;
width: 300px;
}
.main {
background: #ccc;
flex: 1;
}
.footer {
background: #000;
color: #fff;
padding: 10px;
}
<div class="menu">Menu</div>
<div class="wrap">
<div class="sidebar">Sidebar</div>
<div class="main">Main</div>
</div>
<div class="footer">Footer</div>
预期的结果是,如果它低于100%,则主要拉伸以填充高度。
答案 0 :(得分:7)
在居中元素上使用flex: 1
:
.Site {
display: flex;
min-height: 100vh;
flex-direction: column;
}
.Site-content {
flex: 1;
background-color:#bbb;
}
<body class="Site">
<header>This is the header text ☺</header>
<main class="Site-content">…</main>
<footer>This is the footer text ☻</footer>
</body>
答案 1 :(得分:0)
要使min-height
的相关单元即使在IE11中也可以正常工作,它只需要一个小技巧。
min-height
的性质是当height
小于height
时覆盖min-height
。非常清楚!但是陷阱是min-height
具有实际单位(%
或vh
)并且未设置height
时。由于它是相对的,因此没有依据。
对于Internet Explorer以外的所有主要浏览器,一种可能性是将单位从%
更改为vh
:
body {
min-height: 100vh;
}
对于Internet Explorer,它需要一个height
(将从min-height
覆盖):
body {
height: 1px;
min-height: 100vh;
}
或也要保留%
的规则也必须应用于html
:
html, body {
height: 1px;
min-height: 100%;
}
用于OP的跨浏览器解决方案需要height: 1px
上的body
,当然flex-grow: 1
上需要.wrap
,以使其比menu
和{{ 1}}:
footer
body,
html {
padding: 0;
margin: 0;
height: 1px; /* added */
min-height: 100%;
}
body {
display: flex;
background: #eee;
flex-direction: column;
}
.menu {
background: red;
color: #fff;
padding: 10px;
}
.wrap {
display: flex;
flex-grow: 1; /* added */
}
.sidebar {
background: #ddd;
width: 300px;
}
.main {
background: #ccc;
flex: 1;
}
.footer {
background: #000;
color: #fff;
padding: 10px;
}