0Pricing
CSS Academy · レッスン

Gridによるホーリーグレイルレイアウト

CSS Gridを使い、ヘッダー、フッター、メイン領域、2つのサイドバーを備えた古典的なホーリーグレイルレイアウトを実装します。

「Gridによるホーリーグレイルレイアウト」はCoddyKit上の無料CSS Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCSS Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 CSS Academyコースには全4レッスンが含まれています。

Holy Grailレイアウトとは

Holy Grailレイアウトは、古典的なWebデザインパターンです。ヘッダーとフッターを備えた全高のページで、中央に3列のセクション(左サイドバー、メインコンテンツ、右サイドバー)を配置します。以前はfloatで実現するのが非常に難しいことで知られていましたが、CSS Gridなら簡単に実装できます。

Gridテンプレートの定義

名前付きのテンプレート領域と行でレイアウトを定義します。grid-template-areasで視覚的な構造を対応付けます。3列3行(ヘッダーは全列にまたがり、フッターも全列にまたがり、中央の行は3列)によって、レイアウト全体を読みやすいASCII図で表現できます。

  <header>Header</header>
  <div class="sidebar">Sidebar</div>
  <main>Main</main>
  <aside>Aside</aside>
  <footer>Footer</footer>

要素を領域に割り当てる

各子要素は、名前で領域を参照します。header { grid-area: header }、main { grid-area: main }、nav { grid-area: sidebar }、aside { grid-area: aside }、footer { grid-area: footer }のように指定します。Gridが要素を自動的に配置します。

中央行の拡張

中央の行では1frを使い、固定高さのヘッダーとフッターの後に残ったビューポートの高さをすべて埋めます。これにより、サイドバーとメインコンテンツが常にビューポートいっぱいに広がります。明示的な高さの計算は必要ありません。

レスポンシブな折りたたみ

モバイルでは、メディアクエリを使ってgrid-template-areasを1列の縦積みレイアウトに再定義します。ヘッダー、サイドバー、メイン、aside、フッターを縦方向に積み重ねます。DOMの順序は維持され、視覚的なGridテンプレートだけが変わります。Grid領域を使うと、レスポンシブな再構成を読みやすく記述できます。

  <header>Header</header>
  <div class="sidebar">Sidebar</div>
  <main>Main</main>
  <aside>Aside</aside>
  <footer>Footer</footer>

レスポンシブにサイドバーを非表示にする

タブレットでは、右側のasideを削除してmainを広げます。"header header" "sidebar main" "footer footer"に再定義し、grid-template-columns: 240px 1frを設定します。aside { display: none }を設定するか、領域定義でmainの下に移動します。

ギャップとパディング

Gridトラック間にはgap: var(--spacing-4)で間隔を追加します。間隔を一貫させるため、パディングはGridコンテナーではなく各領域の内側に適用します。通常、ヘッダーとフッターには、Gridの最大幅の配置に合わせた独自の左右パディングを設定します。

ネストしたGrid

メインコンテンツ領域自体をGridにすることもできます。たとえば、main領域の中に記事とサイドバーの2列を配置できます。ネストしたGridを使えば、複雑なクラス階層や深くネストした配置指定なしに、ページの外枠レイアウトの中にコンテンツレイアウトを作成できます。

スティッキーヘッダー

ヘッダーをスティッキーにするには、header { position: sticky; top: 0; z-index: 10; }とします。Gridレイアウトでは、Gridの子要素に対するsticky配置も期待どおりに機能し、main、サイドバー、asideがその下でスクロールする間、ヘッダーが固定されます。

Holy Grailのスティッキーサイドバー

両方のサイドバーをスティッキーにできます。nav, aside { position: sticky; top: 0; height: 100vh; overflow-y: auto; }とします。メインコンテンツのスクロール中もサイドバーが表示され続けるため、中央だけがスクロールする3パネルのレイアウトを作成できます。

ページレイアウトにおけるGridとFlexboxの使い分け

Holy Grailのような2次元のページ外枠レイアウトにはGridを使用します。Gridは、名前付きの行と列に要素を同時に配置することに優れています。Grid領域内の1次元のコンポーネントレイアウト(横方向のナビゲーション項目や縦方向のカードコンテンツなど)にはFlexboxを使用します。

理解度チェック

レスポンシブなHoly Grailレイアウトで、grid-template-areasが特に便利なのはなぜですか?

まとめ

CSS Gridを使うと、以前は実現が難しかったHoly Grailレイアウトを簡単に作成できます。grid-template-areasで領域に名前を付け、中央の行の1frでビューポートの高さを埋め、メディアクエリで領域マップを再定義してレスポンシブに折りたたみます。スティッキーヘッダーやサイドバーも、複雑さを増やさずに組み合わせられます。

よくある質問

「Gridによるホーリーグレイルレイアウト」レッスンは無料ですか?

はい。「Gridによるホーリーグレイルレイアウト」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、CSS Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 CSS Academyコースには全4レッスンが含まれています。

「Gridによるホーリーグレイルレイアウト」で何を学びますか?

CSS Gridを使い、ヘッダー、フッター、メイン領域、2つのサイドバーを備えた古典的なホーリーグレイルレイアウトを実装します。 ブラウザで直接実行するハンズオンコードでCSS Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

CSS Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCSS Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「Gridによるホーリーグレイルレイアウト」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCSS Academyレッスンでコードを書いて実行できますか?

はい。すべてのCSS Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. スティッキーフッターとサイドバーのレイアウト
  2. Gridによるホーリーグレイルレイアウト
  3. Masonryレイアウト: CSSとJSによる方法
  4. 固有サイズ設計: コンテンツ基準のサイズ設定
← CSS Academyに戻る