我将不得不为此使用 CSS flexbox,然后使用像 Flexibility 这样的 polyfill来获得旧的 IE 支持。
这是一个使用 Flexbox 的工作Codepen。
html, body {
margin:0;
padding:0
}
.wrap {
display: flex;
min-height: 100vh;
flex-direction: column;
max-width:1200px;
margin:auto;
}
.main {
flex: 1;
display:flex;
}
footer, header {
background:green;
padding:10px;
}
.sidebar {
background:blue;
flex:0 0 300px;
padding:10px;
}
.content{
background:yellow;
padding:10px;
flex:1;
}
@media screen and (max-width:680px){
.sidebar{flex: 0;order:0}
.main {flex-direction:column;}
}
<!-- could use body element instead of wrap if wanted -->
<div class="wrap">
<header>Header</header>
<main class="main">
<div class="sidebar">Sidebar Sidebar Sidebar Sidebar Sidebar Sidebar Sidebar Sidebar Sidebar Sidebar Sidebar Sidebar Sidebar Sidebar Sidebar Sidebar Sidebar Sidebar Sidebar Sidebar Sidebar Sidebar Sidebar Sidebar Sidebar Sidebar Sidebar </div>
<div class="content">Main content Main content Main content Main content Main content Main content Main content Main content Main content Main content Main content Main content Main content Main content Main content Main content Main content Main content Main content Main content Main content Main content Main content </div>
</main>
<footer>footer - <a target="blank" href="http://codepen.io/paulobrien/full/FKAxH/">See display table version of sticky footer</a></footer>
</div>
找到一个可以由旧版 IE 支持的纯 CSS 解决方案会很不错,但我认为不值得为此付出额外的代码膨胀,尤其是对于一小部分用户而言。