カテゴリ: CSS 更新日: 2026/01/19

CSS Gridで解決!フッターを画面下部にピタッと固定する方法

フッターを下部に固定するグリッドレイアウト例
フッターを下部に固定するグリッドレイアウト例

先生と生徒の会話形式で理解しよう

生徒

「Webサイトを作っているのですが、中身の文章が少ない時にフッターが画面の真ん中あたりまで浮き上がってきてしまいます。どうすれば一番下に固定できますか?」

先生

「それはWeb制作初心者の方が必ず直面する悩みですね。最新のCSS Grid(グリッド)を使えば、たった数行で解決できるんですよ。」

生徒

「グリッドレイアウトって、複雑な表を作るためのものだと思っていました。フッターの固定にも使えるんですね!」

先生

「はい!画面全体の『高さ』をコントロールして、余ったスペースを自動で埋める仕組みを作れば、どんな画面サイズでもきれいに表示されます。具体的な方法を見ていきましょう!」

1. なぜフッターが浮き上がってしまうのか?

1. なぜフッターが浮き上がってしまうのか?
1. なぜフッターが浮き上がってしまうのか?

Webサイトの画面は、上から「ヘッダー(頭)」「メイン(中身)」「フッター(足)」という順番で構成されるのが一般的です。しかし、パソコンやスマートフォンの画面は、中身の文章量よりも縦に長いことがよくあります。

ブラウザの仕組みとして、要素は上から順番に詰めて配置されます。そのため、メイン部分の文章が一行しかないような場合、そのすぐ下にフッターが配置され、画面の下側に大きな空白(隙間)ができてしまうのです。これでは格好悪いですよね。理想は、中身が少なくてもフッターが常に「画面の一番下」にいてくれる状態です。これを実現するために、画面全体のレイアウトを管理する魔法のルールを作ります。

2. CSS Gridで画面全体の「高さ」を定義する

2. CSS Gridで画面全体の「高さ」を定義する
2. CSS Gridで画面全体の「高さ」を定義する

フッターを下に押し出すためには、ページ全体の箱に対して「最低でも画面いっぱいの高さを持ってください」と命令する必要があります。ここで使うのが min-height: 100vh; という指定です。 vh とは「表示領域の高さ(Viewport Height)」のことで、 100vh は画面の高さ100%を意味します。

この画面いっぱいの箱を display: grid; でグリッドレイアウトにします。そして、行(縦方向)の分割ルールを決めます。ヘッダーとフッターは中身に合わせた高さにし、メイン部分だけが「余ったスペースをすべて使い切る」ように設定します。これだけで、メイン部分がフッターを画面の一番下まで押し下げてくれるようになります。


<style>
	/* 画面全体のレイアウト設定 */
	.site-container {
		display: grid;
		/* 画面いっぱいの高さを確保 */
		min-height: 100vh;
		/* 縦の並び:ヘッダー(自動)、メイン(余り全部)、フッター(自動) */
		grid-template-rows: auto 1fr auto;
	}
	header { background: #ffadad; padding: 20px; text-align: center; }
	main { background: #fdffb6; padding: 20px; }
	footer { background: #a0c4ff; padding: 20px; text-align: center; }
</style>

<div class="site-container">
	<header>ヘッダー部分</header>
	<main>中身が少ないですが、メイン部分が伸びてフッターを押し下げます。</main>
	<footer>フッター部分(常に一番下)</footer>
</div>
ブラウザ表示

3. 魔法の単位「1fr」がフッター固定の鍵

3. 魔法の単位「1fr」がフッター固定の鍵
3. 魔法の単位「1fr」がフッター固定の鍵

先ほどのコードに出てきた 1fr という単位について詳しく解説します。これは「余ったスペースをどれくらいの割合で分け合うか」を決める、グリッド専用の単位です。 grid-template-rows: auto 1fr auto; と書くことで、ヘッダーとフッターに必要な分だけ場所を渡し、残されたすべての縦のスペースをメイン部分(中央)に割り当てています。

メイン部分がどれだけ内容がなくても、この 1fr という指定のおかげで、メイン部分は画面下まで目一杯広がろうとします。その結果、一番下に配置されたフッターが、自動的に画面の最下部にピタッとくっつくのです。計算機でピクセル数を計算する必要はありません。すべてブラウザにお任せできるのがグリッドレイアウトの素晴らしい点です。

4. 文章が長くなっても大丈夫!自動調整の仕組み

4. 文章が長くなっても大丈夫!自動調整の仕組み
4. 文章が長くなっても大丈夫!自動調整の仕組み

「画面の下に固定」と聞くと、文章が長くなった時に文字がフッターに重なってしまうのではないかと心配になるかもしれません。しかし、CSS Gridの素晴らしいところは、中身が増えた時には自動的に枠が広がってくれる点です。

メイン部分の文章が画面の高さを超えるほど長くなった場合、 min-height(最低限の高さ)のルールが働き、全体の高さが文章に合わせて伸びていきます。フッターは常にメイン部分の「次」に配置されるルールなので、文章の最後まできちんとスクロールした一番下に出てきます。つまり、「中身が少ない時は画面の下に、多い時は文章の最後に」という、Webサイトとして理想的な動きをたった一つの設定で実現できるのです。


<style>
	.site-layout-long {
		display: grid;
		min-height: 100vh;
		grid-template-rows: auto 1fr auto;
	}
	.header-box { background: #ffc6ff; padding: 15px; }
	.content-box { background: #f0f0f0; padding: 20px; }
	.footer-box { background: #9bf6ff; padding: 15px; }
</style>

<div class="site-layout-long">
	<div class="header-box">ロゴやメニュー</div>
	<div class="content-box">
		<p>ここには長い文章が入ります。</p>
		<p>(ここにたくさんのテキストが続くと仮定してください)</p>
		<img src="/img/sample150-100.jpg" alt="サンプル画像">
		<p>文章が長くなっても、フッターはこの下に正しく表示されます。</p>
	</div>
	<div class="footer-box">© 2026 プログラミング初心者ガイド</div>
</div>
ブラウザ表示

5. サイドバーがある場合のフッター固定設計

5. サイドバーがある場合のフッター固定設計
5. サイドバーがある場合のフッター固定設計

次に、Webサイトによくある「サイドバー」が含まれるレイアウトでフッターを固定する方法を考えてみましょう。この場合は、縦方向の分割だけでなく、横方向の分割も組み合わせます。グリッドレイアウトを使えば、複雑な構造も「どのマス目に何を置くか」を決めるだけで簡単に組み立てられます。

全体の親要素で grid-template-areas という機能を使うと、まるで地図を描くように名前でレイアウトを指示できます。ヘッダーを一番上に、真ん中にサイドバーとメインを横並びにして、一番下にフッターを配置します。この時も全体の高さを 100vh に設定し、真ん中の行を 1fr にすることで、サイドバーとメインが協力してフッターを下に押し下げてくれます。


<style>
	.full-page-grid {
		display: grid;
		min-height: 100vh;
		grid-template-columns: 150px 1fr;
		grid-template-rows: auto 1fr auto;
		/* 名前で場所を指定する「地図」の設計 */
		grid-template-areas:
			"head head"
			"side main"
			"foot foot";
	}
	.site-header { grid-area: head; background: #e2e2e2; padding: 10px; }
	.site-sidebar { grid-area: side; background: #ffd6a5; padding: 10px; }
	.site-main { grid-area: main; background: #fdffb6; padding: 10px; }
	.site-footer { grid-area: foot; background: #caffbf; padding: 10px; }
</style>

<div class="full-page-grid">
	<header class="site-header">Webサイトのヘッダー</header>
	<nav class="site-sidebar">メニュー</nav>
	<main class="site-main">サイドバーがあってもフッターは下に固定されます。</main>
	<footer class="site-footer">便利なフッター</footer>
</div>
ブラウザ表示

6. 注意!親要素の高さ設定を忘れずに

6. 注意!親要素の高さ設定を忘れずに
6. 注意!親要素の高さ設定を忘れずに

「コードを真似したのにフッターが浮いたままになる」というトラブルで一番多い原因は、親要素の高さを指定し忘れていることです。 site-container などの親要素に対して、必ず min-height: 100vh; を書き込むようにしましょう。これがないと、親要素自体が中身に合わせて短くなってしまい、グリッドの魔法が効かなくなります。

また、ブラウザによっては最初から body タグに余計な余白(マージン)がついていることがあります。これもレイアウト崩れの原因になるため、CSSの冒頭で body { margin: 0; } と書いて、余白をリセットしておくと安心です。パソコン操作に慣れていない方は、まずはお手本通りのコードをそのまま貼り付けてみて、少しずつ自分好みの色や幅に変えていくのが上達への近道です。

7. スマートフォンでの見え方(レスポンシブ)を確認

7. スマートフォンでの見え方(レスポンシブ)を確認
7. スマートフォンでの見え方(レスポンシブ)を確認

最近はパソコンよりもスマートフォンでWebサイトを見る人の方が多いです。今回のグリッドを使ったフッター固定方法は、スマホでもそのまま威力を発揮します。画面が狭いスマホでは、 grid-template-columns: 1fr; (1列にする)という設定に変えるだけで、縦にきれいに並んだまま、フッターを一番下に置くことができます。

CSS Gridは、このような画面サイズに合わせた変更(レスポンシブデザイン)も得意としています。まずは基本の固定方法をマスターして、どんな端末で見ても美しい、プロのような仕上がりを目指しましょう。一度この「1fr」の便利さを知ってしまうと、もう古い方法には戻れなくなるはずです。プログラミングは難しく感じることもありますが、こうした便利な道具を使いこなすことで、あなたのやりたいことがどんどん形になっていきますよ!

8. 最後にコードを清書して完成させよう

8. 最後にコードを清書して完成させよう
8. 最後にコードを清書して完成させよう

ここまでの知識を詰め込んだ、最終的な完成版コードを作成します。これがあなたのWebサイトの「土台(テンプレート)」になります。ヘッダー、メイン、フッターの3つの要素をしっかり分け、全体の高さをコントロールする。この基本を忘れずに、素敵なWebページを制作してみてください。CSSの世界は奥深いですが、基本さえ押さえれば自由自在にデザインを操れるようになります!


<style>
	/* 基本のリセット設定 */
	body { margin: 0; padding: 0; }

	/* ページ全体の構造 */
	.wrapper {
		display: grid;
		min-height: 100vh;
		grid-template-rows: auto 1fr auto;
		font-family: "Meiryo", sans-serif;
	}

	header { background: #333; color: white; padding: 1rem; text-align: center; }
	main { padding: 2rem; line-height: 1.6; }
	footer { background: #eee; padding: 1rem; text-align: center; font-size: 0.8rem; }
</style>

<div class="wrapper">
	<header>
		<h1>マイ・ウェブサイト</h1>
	</header>
	<main>
		<h2>ようこそ!</h2>
		<p>CSS Gridを使えば、レイアウトがとっても簡単になります。</p>
		<p>このメインコンテンツの量が少なくても、フッターは一番下に留まります。</p>
	</main>
	<footer>
		<p>Copyright © 2026 My Website. All rights reserved.</p>
	</footer>
</div>
ブラウザ表示
2026年最新 スキルアップ・実践セミナー

【60分集中】Flexboxを完全攻略!最新CSS3で「崩れない・迷わない」モダンUI構築セミナー

「魅せる力」をコードで実現。CSS3でモダンWebデザインのプロトタイピングを。

本講座では、単に色を変えるだけではなく、「ユーザーを迷わせないUIデザイン」「崩れないレイアウト設計」の本質を学びます。最新のCSS3とモダンなレイアウト手法を通じて、プロの現場で通用する「美しさと機能性を両立した実装力」を最短距離で習得します。

具体的なワークショップ内容と環境

【つくるもの】
HTMLで作成した骨組みに対し、商用サイトでも採用される「スタイリッシュなカード型UI」や「レスポンシブなナビゲーション」を構築します。色の選定基準や余白(ホワイトスペース)の黄金比など、デザインの理論をコードに落とし込む工程を体験してください。

【開発環境】
フロントエンド開発の標準であるVisual Studio Code (VS Code)を継続使用。CSSの記述を効率化するプラグインや、ブラウザのデベロッパーツール(検証機能)を駆使して、リアルタイムでデザインを微調整するプロのワークフローを再現します。

この60分で得られる3つの技術資産

1. 現代のデファクトスタンダード「Flexbox」

要素の横並びや中央揃えを自由自在に操り、どんなデバイスでも崩れないレスポンシブな配置術を完全理解します。

2. メンテナンス性を高めるCSS設計の基礎

後から修正しやすい「壊れにくいコード」の書き方を伝授。プロの現場で必須となる命名規則の考え方を学びます。

3. パフォーマンスと美しさの両立

画像の最適化や軽量な装飾技法など、ページの表示速度を落とさずに高級感のある演出を行うテクニックを習得します。

※本講座は、HTMLの基礎を終えた後のステップアップ講座です。Webデザイナー、UIデザイナー、フロントエンドエンジニアへの道を切り開く「魅せる技術」を、モクモク独自のパーソナル指導で着実に定着させます。

【60分集中】Flexboxを完全攻略!最新CSS3で「崩れない・迷わない」モダンUI構築セミナー

リラックスしながら、学ぶことが大切です。しっかりと基礎を理解しましょう!

各回少人数・マンツーマン形式で徹底サポート

このセミナーの詳細・お申し込みはこちら
カテゴリの一覧へ
新着記事
New1
CSS
CSSのリセットとノーマライズとは?初心者でもわかるブラウザの差をなくす方法
New2
CSS
CSSの画面サイズ対応スタイル完全ガイド!初心者でもわかる相対単位の使い方
New3
HTML
HTMLで外部SVGを読み込む方法を完全解説!初心者でもわかる画像とアイコンの基本
New4
CSS
CSSの単位一覧と使い分けを徹底解説!初心者でもすぐに理解できるスタイル調整の基本
人気記事
No.1
Java&Spring記事人気No1
CSS
CSSのレスポンシブ新常識!メディアクエリとコンテナクエリの違いを徹底解説
No.2
Java&Spring記事人気No2
CSS
CSSの状態によるセレクタ完全ガイド!初心者でもわかる:checkedと:disabledの使い方
No.3
Java&Spring記事人気No3
CSS
CSSで要素を消す方法を完全ガイド!display:noneとvisibility:hiddenの違い
No.4
Java&Spring記事人気No4
CSS
CSSで要素のサイズを自動調整!autoとfit-contentの使い方
No.5
Java&Spring記事人気No5
Bootstrap
Bootstrap 5 と Tailwindの違いを比較:どっちを選ぶ?用途別の選び方を初心者向けに解説
No.6
Java&Spring記事人気No6
Bootstrap
Bootstrap Iconsのライセンスと商用利用の注意点【著作権と表記を初心者向けに解説】
No.7
Java&Spring記事人気No7
Bootstrap
Bootstrapフォームのレイアウト設計を完全解説!1列・2列・グリッドフォームをブレークポイント別に作ろう
No.8
Java&Spring記事人気No8
CSS
CSSのmarginとpaddingの違いとは?初心者でもわかるボックス間のスペース調整の基本