GeneratePressのアーカイブをグリッドに

GeneratePressのアーカイブは、article要素が連なった形でHTML出力されています。デフォルトではそのarticle要素は縦に積まれていて、ちょうどリストのように表示されますが、これをいわゆる「グリッドレイアウト」にしたい方も多いと思います。

これをCSSだけで実現してみましょう。カスタマイザーの追加CSSに以下を足してみてください。

/* アーカイブ・ホームページ グリッドレイアウト */

/* グリッドコンテナの基本設定
   :is() は複数のセレクタをまとめて書ける便利な機能です
   body.home または body.archive のときに適用されます */
:is(body.home, body.archive) .site-main {
  display: grid;
  grid-template-columns: 1fr; /* 最初は1列 */
  gap: 20px; /* 要素間の間隔 */
}

/* ヘッダーとナビゲーションを全幅にする
   grid-column: 1 / -1 は「最初の列から最後の列まで」という意味です
   これによってヘッダーとナビが全幅に広がります */
:is(body.home, body.archive) .site-main > :is(header, nav) {
  grid-column: 1 / -1;
}

/* ヘッダーと記事の下の余白をなくす */
:is(body.home, body.archive) .site-main > :is(header, article) {
  margin-bottom: 0;
}

/* 記事内部の高さを親の高さに合わせる */
:is(body.home, body.archive) .site-main > article .inside-article {
  height: 100%;
}

/* タブレット以上の幅:2列レイアウト */
@media (min-width: 768px) {
  :is(body.home, body.archive) .site-main {
    grid-template-columns: repeat(2, 1fr); /* 2列、幅は同じ */
  }
}

/* デスクトップ以上の幅:3列レイアウト */
@media (min-width: 1024px) {
  :is(body.home, body.archive) .site-main {
    grid-template-columns: repeat(3, 1fr); /* 3列、幅は同じ */
  }
}