<!doctype html>
<title>Example</title>
<style>
* {
box-sizing: border-box;
}
body {
display: flex;
min-height: 100vh;
flex-direction: column;
margin: 0;
#main {
flex: 1;
#main > article {
#main > nav,
#main > aside {
flex: 0 0 20vw;
background: beige;
#main > nav {
order: -1;
header, footer {
background: yellowgreen;
height: 20vh;
header, footer, article, nav, aside {
padding: 1em;
</style>
<body>
<header>Header</header>
<div id="main">
<article>Article</article>
<nav>Nav</nav>
<aside>Aside</aside>
</div>
<footer>Footer</footer>
</body>