Вот такой небольшой пример покрывает 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>

Результат

пример лайаута на css grid