CSS Grid Layout を試す (4) 固定幅中央寄せ、レスポンシブ

レイアウトに使う

エリアの名前を使ってアイテムを指定するパターン

メイン

HTML

<div class="container">
  <header>
    <h1>タイトル</h1>
  </header>
  <main>メイン</main>
  <nav>ナビ</nav>
  <aside id="side">サイド</aside>
  <footer>フッター</footer>
  <aside id="ad">広告</aside>
</div>

CSS

.container {
  display: grid;
  margin: 0;
  min-height: 100vh;
  /*grid-template-rows: 300px 100px 1fr 300px 300px 300px;*/
  grid-template-columns: 1fr;
  grid-template-areas:
    "title"
    "nav"
    "main"
    "side"
    "ad"
    "footer";
}
.container > * {
  margin: 3px;
  padding: 10px;
}
header {
  grid-area: title;
  background: #faa;
  border-radius: 10px 10px 0 0;
}
main {
  grid-area: main;
  background: #afa;
}
nav {
  grid-area: nav;
  background: #aaf;
}
#side {
  grid-area: side;
  background: #faf;
}
footer {
  grid-area: footer;
  background: #aaa;
  border-radius: 0 0 10px 10px;
  text-align: right;
}
#ad {
  grid-area: ad;
  background: #888;
}
/* for PC */
@media (min-width: 992px) {
  .container {
    width: 1060px;
    margin: 0 auto;
    grid-template-rows: 300px 100px 1fr 100px;
    grid-template-columns: 100px 1fr 300px;
    grid-template-areas:
        "title  title  title "
        "nav    main   ad    "
        "nav    main   side  "
        "footer footer footer";
  }
}

仕様

参考