Grid
Mobile
.box {
display: grid;
}
<div class="box">
<header>Header</header>
<nav>Nav</nav>
<div>Main</div>
<footer>Footer</footer>
</div>
The default grid is like block flow, because it has only one column:
Header
Nav
Main
Footer
Desktop
@media (min-width: 40em) {
.box {
display: grid;
grid-gap: 1em;
grid-template-columns: auto 1fr;
}
header {
grid-column: span 2;
}
nav {
grid-row: span 2;
}
}
grid-template-columns
defines two columns.
Main
Empty rows collapse.