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

CSS Gridレイアウト設計術!固定幅・自動幅・割合幅を組み合わせる方法

固定幅・自動幅・割合幅を組み合わせたレイアウト設計
固定幅・自動幅・割合幅を組み合わせたレイアウト設計

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

生徒

「Webサイトを作るとき、サイドバーの幅は固定して、メインの記事部分は画面の大きさに合わせて伸び縮みさせたいのですが、どうすればいいですか?」

先生

「それは『CSS Grid』の得意分野ですね!固定の長さ、中身に合わせる自動の長さ、そして余った分を分け合う割合の長さを自由に組み合わせることができます。」

生徒

「いろいろな単位を混ぜても大丈夫なんですか?計算が大変そうに見えますが……。」

先生

「大丈夫ですよ。ブラウザが自動で計算してくれる魔法のような書き方があるんです。まずは基本の考え方から解説しますね!」

1. CSS Gridで使われる3つの長さの考え方

1. CSS Gridで使われる3つの長さの考え方
1. CSS Gridで使われる3つの長さの考え方

Webページのレイアウトを設計する際、マス目の幅を決める方法は大きく分けて3つあります。1つ目は「絶対にこの幅!」と決める固定幅、2つ目は「入っている文字や画像の大きさに合わせる」自動幅、3つ目は「画面の余ったスペースを分け合う」割合幅です。

プログラミング未経験の方にとって、これらを使い分けるのは難しく感じるかもしれませんが、料理の盛り付けをイメージしてみてください。お皿のサイズ(画面幅)が変わっても、メインのハンバーグの大きさ(固定幅)は変えず、添え物の野菜(自動幅)は量に合わせて調整し、ソース(割合幅)で余白を埋める、といった具合に役割を分担させるのです。これらを「grid-template-columns」というプロパティ一つで設定できるのが、現代のCSSの凄いところです。

2. 固定幅(px)で絶対に動かないエリアを作る

2. 固定幅(px)で絶対に動かないエリアを作る
2. 固定幅(px)で絶対に動かないエリアを作る

まずは固定幅です。これは「px(ピクセル)」という単位を使って指定します。ピクセルとは、パソコンの画面を構成する最小の点のことです。例えば「200px」と指定すれば、パソコンで見てもスマホで見ても、そのエリアは必ず200ピクセルの幅になります。

サイドバーの広告枠や、決まったサイズのロゴを表示したいときに非常に便利です。周囲がどれだけ伸び縮みしても、ここだけは頑固にサイズを守り続けます。初心者の方は、まず「動かしたくないもの」を見つけて、そこにpxを割り当てることから始めてみましょう。


<style>
    .fixed-container {
        display: grid;
        /* 左側を200px固定、右側を残りの全幅にする */
        grid-template-columns: 200px 1fr;
        gap: 10px;
        background-color: #f8f9fa;
    }
    .fixed-side {
        background-color: #ffadad;
        padding: 20px;
    }
    .flexible-main {
        background-color: #ffd6a5;
        padding: 20px;
    }
</style>

<div class="fixed-container">
    <div class="fixed-side">200px固定</div>
    <div class="flexible-main">ここは画面幅に合わせて伸びます</div>
</div>
ブラウザ表示

3. 自動幅(auto)で中身にピッタリ寄り添う

3. 自動幅(auto)で中身にピッタリ寄り添う
3. 自動幅(auto)で中身にピッタリ寄り添う

次に、自動幅(auto)について説明します。 auto という指定を使うと、そのマス目の中に入っている文字や画像の大きさに合わせて、ブラウザが勝手に幅を調整してくれます。

例えば、短い単語のときは細いマスになり、長い文章のときは広いマスになります。無駄な余白を作りたくないときや、ボタンの文字数に合わせて枠の大きさを変えたいときに重宝します。ただし、中身が何もないと幅が消えてしまったり、逆に中身が多すぎると広がりすぎてしまったりすることもあるので、使い所が肝心な「気配り上手」な設定です。


<style>
    .auto-container {
        display: grid;
        /* 1つ目は中身に合わせる、2つ目は余った分すべて */
        grid-template-columns: auto 1fr;
        gap: 15px;
        border: 2px solid #333;
    }
    .auto-label {
        background-color: #caffbf;
        padding: 10px;
        white-space: nowrap; /* 改行させない */
    }
    .content-area {
        background-color: #9bf6ff;
        padding: 10px;
    }
</style>

<div class="auto-container">
    <div class="auto-label">ラベル</div>
    <div class="content-area">ラベルの長さに左側が自動で合わさります</div>
</div>
ブラウザ表示

4. 割合幅(fr)で余白を柔軟に分け合う

4. 割合幅(fr)で余白を柔軟に分け合う
4. 割合幅(fr)で余白を柔軟に分け合う

一番の魔法の単位が fr(エフアール) です。これは「Fraction(分数、比率)」の略で、「余っているスペースをどれくらいの割合で分けるか」を決めます。

例えば 1fr 2fr と書けば、余った場所を「1:2」の比率で分け合います。画面が大きくなればその分だけ両方とも広がり、画面が小さくなれば比率を保ったまま縮みます。パーセント(%)計算と違って、pxでの固定幅を引いた後の「本当の余り」を計算してくれるので、複雑な計算を人間がする必要がありません。現代のWeb制作では欠かせない、レスポンシブデザイン(画面サイズに合わせる設計)の強力な味方です。

5. 実践!固定・自動・割合を全部組み合わせる

5. 実践!固定・自動・割合を全部組み合わせる
5. 実践!固定・自動・割合を全部組み合わせる

いよいよ、これらを一つのレイアウトに盛り込んでみましょう。左側に「固定サイズのアイコン」、真ん中に「文字数に合わせるラベル」、右側に「広く伸びる詳細説明」を並べる3カラム(3列)構成です。このようにバラバラな単位を混ぜて書くだけで、ブラウザが瞬時に計算してくれます。


<style>
    .mix-layout {
        display: grid;
        /* 固定 50px、自動、割合 1 */
        grid-template-columns: 50px auto 1fr;
        gap: 10px;
        align-items: center;
        padding: 10px;
        border: 1px dashed #666;
    }
    .icon { background: #bdb2ff; height: 50px; text-align: center; line-height: 50px; }
    .tag { background: #ffc6ff; padding: 5px 15px; border-radius: 20px; }
    .desc { background: #e2e2e2; padding: 10px; }
</style>

<div class="mix-layout">
    <div class="icon">★</div>
    <div class="tag">新着</div>
    <div class="desc">ここは余ったスペースをすべて使って表示されます。</div>
</div>
ブラウザ表示

6. レイアウト崩れを防ぐための注意点

6. レイアウト崩れを防ぐための注意点
6. レイアウト崩れを防ぐための注意点

初心者がよくやってしまうミスに、 auto を多用しすぎて中身がはみ出してしまうことがあります。 auto は非常に便利ですが、中身が巨大な画像だったり、長すぎる英単語(URLなど)が入ったりすると、親の枠を突き抜けて広がる性質があります。

これを防ぐためには、「ここは絶対にこれ以上広げたくない」という場所に固定幅(px)を使い、逆に「余った分で何とかしてほしい」という広い場所には割合幅(fr)を割り当てるのがコツです。それぞれの単位が持つ「性格」を理解して、適材適所に配置してあげましょう。もし表示がおかしくなったら、まずはどれか一つの単位を 1fr に変えてみると、解決の糸口が見つかることが多いですよ。

7. px・auto・frの使い分け黄金比

7. px・auto・frの使い分け黄金比
7. px・auto・frの使い分け黄金比

実際のWebサイト制作では、どのような組み合わせが一般的でしょうか?よく使われる「黄金比」のような組み合わせがあります。それは 200px 1fr という、固定サイドバーと可変メインコンテンツのセットです。これだけで、今の時代に合ったスマホ対応の基礎が出来上がります。

また、ナビゲーションメニューなどの場合は repeat(3, auto) を使って「文字数に合わせて3つ並べる」という使い方も人気です。最初は難しく考えず、この「黄金比」をテンプレートとして自分のコードに書き込んでみることからスタートしましょう。実際に数字をいじって画面がどう変わるかを見るのが、一番の上達法です。

8. 自由自在なグリッド設計を目指して

8. 自由自在なグリッド設計を目指して
8. 自由自在なグリッド設計を目指して

固定幅、自動幅、割合幅をマスターすれば、あなたのWebデザインの幅は一気に広がります。まるで積み木を組み立てるように、思い通りの場所に思い通りのサイズの箱を作れるようになるからです。パソコンに慣れていない方でも、この3つの単位の違いさえ覚えれば、プロのようなレイアウトが数行のCSSで作れるようになります。

「この部分は画面が小さくなっても形を保ちたいからpxかな?」「ここは文章がたくさん入るからfrで広げておこう」と、パーツの役割を考えながら設計を楽しんでみてください。Gridレイアウトは、あなたの想像力を形にする最高のツールです。次のステップでは、これらをさらに便利にする関数も学んでいきますが、まずはこの3つの組み合わせをしっかりと手に馴染ませていきましょう!


<style>
    /* おまけ:さらに高度な4カラムレイアウト */
    .expert-grid {
        display: grid;
        /* 左から:固定、自動、割合、割合 */
        grid-template-columns: 80px auto 1fr 2fr;
        gap: 20px;
        padding: 15px;
        background: white;
    }
    .grid-box { border: 2px solid #ddd; padding: 10px; text-align: center; }
</style>

<div class="expert-grid">
    <div class="grid-box" style="background:#ffadad">写真</div>
    <div class="grid-box" style="background:#ffd6a5">カテゴリ名</div>
    <div class="grid-box" style="background:#fdffb6">短い紹介</div>
    <div class="grid-box" style="background:#caffbf">非常に長い本文がここに入ります</div>
</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
Bootstrap
Bootstrap4からBootstrap5への移行ガイド!jQuery不要化とユーティリティ強化の変更点を初心者向けに徹底解説
New3
CSS
CSSのfocus活用術!入力欄が光るハイライトスタイルで使いやすいWebフォームを作る
New4
HTML
HTML selectのvalue属性の役割を完全解説!表示値との違いを初心者向けにやさしく理解
人気記事
No.1
Java&Spring記事人気No1
Bootstrap
Bootstrap 5ボタン入門:.btn・.btn-primaryの種類とサイズ・形を初心者向けに完全解説
No.2
Java&Spring記事人気No2
CSS
CSSで要素のサイズを自動調整!autoとfit-contentの使い方
No.3
Java&Spring記事人気No3
HTML
HTML input type="email"の入力チェック仕様と注意点を徹底解説 初心者向け完全ガイド
No.4
Java&Spring記事人気No4
CSS
テキストボックスの作り方!CSSで幅・高さ・色を自由にカスタマイズする方法
No.5
Java&Spring記事人気No5
HTML
HTMLのimgタグの書き方|src・altの必須属性を初心者向けにやさしく整理
No.6
Java&Spring記事人気No6
HTML
HTML inputタグとは?フォーム入力を担う基本要素を初心者向けに完全解説
No.7
Java&Spring記事人気No7
CSS
ハンバーガーメニューの表示切替を完全ガイド!スマホ対応のレスポンシブCSS
No.8
Java&Spring記事人気No8
HTML
HTML input type="number"の使い方を完全ガイド!初心者でもわかる数値入力の基本