Вот такой небольшой пример покрывает 90% случаев моего использования css grid.
*,
*::before,
*::after {
box-sizing: border-box;
}
body {
font-family:
-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans",
"Helvetica Neue", sans-serif;
background: #f0f0f0;
font-size: 16px;
padding: 0;
margin: 0;
}
.layout {
min-height: 100vh;
max-width: 1200px;
padding: 15px 0;
margin: 0 auto;
grid-gap: 15px;
display: grid;
gap: 15px;
grid-template-areas:
"header"
"nav"
"main"
"footer";
}
header,
footer,
main,
aside {
background: #fff;
display: block;
padding: 15px;
}
header {
grid-area: header;
}
footer {
grid-area: footer;
}
main {
grid-area: main;
}
aside {
grid-area: nav;
}
@media (min-width: 40em) {
.layout {
grid-template-columns: 12em auto;
grid-template-rows: auto 1fr auto;
grid-template-areas:
"header header"
"nav main"
"nav footer";
}
}
<div class="layout">
<header>header</header>
<main>
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Inventore debitis quasi itaque sed,
doloremque magni provident animi soluta enim, optio quia officia quos consectetur. Ipsam
asperiores beatae sit quisquam exercitationem? Veniam possimus exercitationem voluptas
molestias? Distinctio, impedit quia! Itaque cupiditate cumque laudantium sed odit nobis possimus
quo quae iusto eveniet, blanditiis excepturi inventore accusantium asperiores provident soluta
sunt corporis minus. Sit animi incidunt ut quia exercitationem, ipsa in nisi, sunt beatae
voluptatum cum. Velit perspiciatis quidem similique, maiores saepe earum, laudantium sapiente
labore asperiores natus impedit nemo ipsa non quibusdam.
</main>
<aside>
nav<br />
nav<br />
nav<br />
nav<br />
nav
</aside>
<footer>footer</footer>
</div>
Результат
