レッスン8:CSSレイアウトのキホン!ボックスモデルを理解しよう

CSSのボックスモデル(padding、margin、border、box-sizing)について学び、要素のスペース調整をマスターします。

🎯 学習目標

  • 「ボックスモデル」の概念を理解する
  • padding、margin、border、width、heightの使い方を習得する
  • 要素間のスペースや見た目の調整ができるようになる
  • box-sizingプロパティの違いを理解する

📚 レッスン

1. ボックスモデルとは?

Webページのすべての要素は「見えない箱(ボックス)」として扱われます。この箱の構造を理解することが、レイアウト作成の基本となります。


2. ボックスの構造を理解しよう

ボックスモデルは、内側から外側へ以下の4つの領域で構成されています。

CSSボックスモデル content 実際の内容 padding border margin 実際の内容が入る部分 (テキスト、画像など) 内側の余白 (背景色が適用される) 枠線 (太さ・種類・色を指定) 外側の余白 (他の要素との間隔) 構成要素(内側から外側へ): 1. content(内容) 2. padding(内側の余白) 3. border(枠線) 4. margin(外側の余白) 💡 ポイント: box-sizing: border-box を使うと、width/height に padding + border のサイズが含まれます
領域 説明 例え
content 文字や画像など、実際の内容が入る部分 段ボール箱の中身
padding 内容と枠線の間のスペース(内側の余白) 中身を保護するクッション
border ボックスの枠線 段ボール箱の壁
margin 他の要素との間隔(外側の余白) 箱と箱の間の隙間

3. paddingとmarginの違い

初学者が最も混乱しやすいのが、paddingmarginの違いです。

以下のデモは、2つのボックスにpadding: 20px;margin: 20px;を設定した例です。paddingボックスの内側にスペースができており、marginボックスの外側にスペースができています。

paddingの例
marginの例

paddingの指定方法

paddingは以下のように指定することができます。記述方式が何パターンかありますが、使っていくうちに覚えていくでOKです。

/* paddingの指定方法 */
.box {
    padding: 20px;           /* 上下左右すべて20px */
    padding: 10px 20px;      /* 上下10px、左右20px */
    padding: 10px 20px 15px; /* 上10px、左右20px、下15px */
    padding: 10px 20px 15px 5px; /* 上10px、右20px、下15px、左5px */
}

/* 個別指定 */
.box {
    padding-top: 10px;
    padding-right: 20px;
    padding-bottom: 15px;
    padding-left: 5px;
}

marginの指定方法

marginはpaddingと同じ形式で指定します。

/* marginの指定方法(paddingと同じ) */
.box {
    margin: 20px;           /* 上下左右すべて20px */
    margin: 10px 20px;      /* 上下10px、左右20px */
    margin: 10px 20px 15px; /* 上10px、左右20px、下15px */
    margin: 10px 20px 15px 5px; /* 上10px、右20px、下15px、左5px */
}

/* 個別指定 */
.box {
    margin-top: 10px;
    margin-right: 20px;
    margin-bottom: 15px;
    margin-left: 5px;
}
marginの便利なTips

marginはautoを設定することでボックスを中央寄せすることができます。レイアウトでよく使われるテクニックです。

/* ボタンを中央寄せにする例 */
.box {
    margin: 0 auto;           /* autoを指定することで中央寄せにできる */
}

ポイント:ボタンの親要素にmarginを設定する必要があります


4. borderの指定

border(枠線)

borderでボックスの境界線を指定します。

/* borderの基本構文 */
.box {
    border: 太さ 線の種類 色;
}

/* 具体例 */
.box {
    border: 2px solid #333;        /* 2px、実線、黒色 */
    border: 1px dashed #ff0000;    /* 1px、破線、赤色 */
    border: 3px dotted #00ff00;    /* 3px、点線、緑色 */
}

/* 個別指定 */
.box {
    border-top: 2px solid #333;
    border-right: 1px dashed #666;
    border-bottom: 3px dotted #999;
    border-left: 1px solid #ccc;
}

5. サイズの指定

width / height(幅と高さ)

コンテンツの横幅と高さを指定することができます。

.box {
    width: 300px;           /* 幅を300pxに指定 */
    height: 200px;          /* 高さを200pxに指定 */
    max-width: 500px;       /* 最大幅を500pxに制限 */
    min-height: 100px;      /* 最小高さを100pxに設定 */
}

6. box-sizingプロパティ

box-sizingは、要素のサイズ計算方法を指定するプロパティです。

content-box(デフォルト)

box-sizing: content-box;の場合、width/heightはコンテンツ部分のみのサイズになります。

例:width: 200px; padding: 20px; border: 5px;を指定した場合の横幅は250pxになります。

.content-box {
    width: 200px;
    height: 100px;
    padding: 20px;
    border: 5px solid #333;
    box-sizing: content-box;
}

/* 実際のサイズ = width + padding + border */
/* 幅 = 200px + 40px + 10px = 250px */
/* 高さ = 100px + 40px + 10px = 150px */

border-box(推奨)

box-sizing: content-box;の場合、width/heightはコンテンツとborderとpadding込みのサイズになります。

例:width: 200px; padding: 20px; border: 5px;を指定した場合の横幅は200pxになります。

ポイント:widthがpaddingやborderを含んだサイズで自動計算がされるので、レイアウトのサイズ計算がしやすくなります!

.border-box {
    width: 200px;
    height: 100px;
    padding: 20px;
    border: 5px solid #333;
    box-sizing: border-box;
}

/* 実際のサイズ = 指定したwidth/height */
/* 幅 = 200px(固定) */
/* 高さ = 100px(固定) */

✨ 比較デモ

box-sizingcontent-boxborder-boxでそれぞれ指定したボックスを横に並べています。どちらも同じ大きさを設定していますが、大きさが違います。

content-box
実際の幅: 250px
border-box
実際の幅: 200px

💡 現在は border-box が推奨

サイズ計算が分かりやすく、レスポンシブデザインでも扱いやすいため、現在ではbox-sizing: border-boxが一般的です。


今日のまとめ

✅ 覚えておきたいポイント

プロパティ 役割 覚え方
content 実際の内容が入る部分 箱の中身
padding 内容と枠線の間のスペース 詰め物・クッション
border ボックスの枠線 箱の壁
margin 他の要素との間隔 箱と箱の隙間
  • box-sizing: border-box を使うとサイズ計算が楽になる
  • margin: 0 auto で左右中央寄せができる

✍️ 演習問題

ここでは学んだ内容を実際に使って、簡単な演習問題に挑戦してみましょう。エディタを使って実際にコードを書いてみてください。

右側のエディタにコードを入力して「実行」ボタンをクリックすると、結果をプレビューで確認できます。

演習1: paddingでレイアウトを調整してみよう

以下のコードを使って、paddingでレイアウトを調整してみましょう。


    <style>
        .box {
            width: 200px;
            background-color: #e3f2fd;
            border: 5px solid #007bff;
        }
    </style>
    <div class="box">ボックス</div>

次の見た目になるようにpaddingで調整してください!

ボックス

                <style>
                    .box {
                        width: 200px;
                        padding: 20px;  /* ここを調整 */
                        border: 5px solid #007bff;
                        background-color: #e3f2fd;
                    }
                </style>
                <div class="box">ボックス</div>
            

解説:

  • padding: 20px;を追加することで、ボックスの内側に余白を設定しています。

演習2: 2つのボックスの余白をmarginで調整しよう


    <style>
        .box1, .box2 {
            width: 200px;
            padding: 20px;
            border: 2px solid #007bff;
            background-color: #e3f2fd;
        }
    </style>
    <div class="box1">ボックス1</div>
    <div class="box2">ボックス2</div>

次の見た目になるようにmarginで調整してください!

ボックス1
ボックス2

                <style>
                    .box1, .box2 {
                        width: 200px;
                        padding: 20px;
                        border: 2px solid #007bff;
                        background-color: #e3f2fd;
                        margin: 30px; /* ここを調整 */
                    }
                </style>
                <div class="box1">ボックス1</div>
                <div class="box2">ボックス2</div>
            

解説:

  • margin: 30px;を追加することで、ボックスの外側の余白を設定しています。

📚 リファレンス

このレッスンで学んだCSSプロパティの詳細については、リファレンスページで確認できます。

✅ 理解度チェック

クイズに正解すると、このレッスンは「完了済み」として記録されます。

1. ボックスモデルの構成要素を内側から外側の順番で並べたものはどれですか?

2. paddingとmarginの違いについて正しい説明はどれですか?

3. box-sizing: border-box; を指定した場合の効果について正しいのはどれですか?

📘 次回予告

次回(レッスン9)は「Webページを思い通りに!CSS表示形式の使い分けを学ぼう」について学びます。

要素の表示方法を理解することで、より柔軟なレイアウトが作成できるようになります。

インラインエディタ