カテゴリ: CSS 更新日: 2025/10/14

CSSのbox-sizingを完全解説!content-boxとborder-boxの違いを初心者向けに徹底解説

コンテンツサイズとボックスサイズの違い(box-sizing: content-box / border-box)
コンテンツサイズとボックスサイズの違い(box-sizing: content-box / border-box)

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

生徒

「先生、CSSで要素のサイズを設定したのに、思ったサイズにならないことがあるんですけど…」

先生

「それはbox-sizingの指定方法が原因かもしれませんよ。」

生徒

「box-sizingってなんですか?よく聞くんですけど、よく分からなくて…」

先生

「じゃあ、content-boxborder-boxの違いを、初心者でも分かるように解説していきましょう。」

1. box-sizingとは?

1. box-sizingとは?
1. box-sizingとは?

CSSのbox-sizingは、要素のサイズをどのように計算するかを決める設定です。ウェブページを作るとき、幅(width)や高さ(height)を指定しても、思った通りのサイズにならないことがあります。その原因のひとつが、このbox-sizingです。

CSSのボックスモデルでは、コンテンツ(文字や画像が入る部分)、パディング(余白)、ボーダー(枠線)、マージン(外側の余白)の4つで要素が構成されています。このうち、サイズ計算にパディングやボーダーを含めるかどうかを切り替えるのがbox-sizingです。

2. content-boxの特徴

2. content-boxの特徴
2. content-boxの特徴

content-boxは、CSSのデフォルト(初期設定)です。widthやheightで指定したサイズが、コンテンツ部分だけのサイズになります。そのため、パディングやボーダーを追加すると、要素全体のサイズが大きくなります。


<style>
.box-content {
    box-sizing: content-box;
    width: 200px;
    padding: 20px;
    border: 5px solid blue;
    background-color: lightyellow;
}
</style>

<div class="box-content">content-boxのボックス</div>
ブラウザ表示

この例では、コンテンツ部分の幅が200pxですが、パディング20pxが両側に、ボーダー5pxが両側に加わるので、全体の幅は200 + 20×2 + 5×2 = 250pxになります。

3. border-boxの特徴

3. border-boxの特徴
3. border-boxの特徴

border-boxでは、widthやheightで指定したサイズにパディングとボーダーも含めるようになります。つまり、見た目のサイズが指定通りになり、余白を追加しても全体サイズが変わりません。


<style>
.box-border {
    box-sizing: border-box;
    width: 200px;
    padding: 20px;
    border: 5px solid green;
    background-color: lightcyan;
}
</style>

<div class="box-border">border-boxのボックス</div>
ブラウザ表示

この場合、widthで指定した200pxの中にパディングやボーダーが含まれるので、要素全体の幅はきっちり200pxのままです。レイアウトを整えるときに便利な設定です。

4. content-boxとborder-boxの違いを例で比較

4. content-boxとborder-boxの違いを例で比較
4. content-boxとborder-boxの違いを例で比較

両者の違いを分かりやすくするために、同じサイズ指定で2つのボックスを並べて表示してみます。


<style>
.box-container {
    display: flex;
    gap: 20px;
}
.box1, .box2 {
    width: 200px;
    padding: 20px;
    border: 5px solid black;
    background-color: lightgray;
}
.box1 {
    box-sizing: content-box;
}
.box2 {
    box-sizing: border-box;
}
</style>

<div class="box-container">
    <div class="box1">content-box</div>
    <div class="box2">border-box</div>
</div>
ブラウザ表示

左のcontent-boxは全体のサイズが大きくなり、右のborder-boxは幅が200pxに収まっています。レイアウトで「揃えたはずなのにズレてしまう…」というときは、この違いが原因になっている場合が多いです。

5. 実践的な使い方とおすすめ設定

5. 実践的な使い方とおすすめ設定
5. 実践的な使い方とおすすめ設定

最近のWeb制作では、要素のサイズを直感的に管理しやすいborder-boxが主流です。全体のレイアウトを崩さずにパディングを調整できるので、デザインが安定します。

多くの開発者は、以下のようにCSSの全要素にborder-boxを適用しています。


<style>
* {
    box-sizing: border-box;
}
</style>

<div>全ての要素にborder-boxを適用</div>
ブラウザ表示

この方法を使えば、すべての要素がborder-boxで統一されるため、サイズ管理がしやすくなります。特にレスポンシブデザインや複雑なレイアウトを扱うときに便利です。

6. content-boxを選ぶケース

6. content-boxを選ぶケース
6. content-boxを選ぶケース

とはいえ、content-boxが役に立つ場面もあります。例えば、正確にコンテンツの幅だけをコントロールしたい場合です。文章や画像の領域をぴったり指定したいときには、content-boxを使うことで余白を自由に追加できます。

7. まとめた違い

7. まとめた違い
7. まとめた違い

最後に、違いを簡単にまとめておきます。

  • content-box:widthとheightはコンテンツ部分だけ。パディングやボーダーを足すと全体のサイズが大きくなる。
  • border-box:widthとheightにパディングやボーダーも含む。見た目のサイズが指定通りになる。
関連記事:
カテゴリの一覧へ
新着記事
CSSのダブルボーダーや点線・破線を完全ガイド!初心者でもわかるdotted・dashed・doubleの使い方
Bootstrapの$theme-colorsを拡張!ブランドカラー追加の完全ガイド【map-merge】
CSSの境界線を部分的に設定する方法を完全ガイド!初心者でもわかるborder-topなどの使い方
BootstrapのSass変数を完全ガイド!初心者でもわかる色・余白・フォント設定
人気記事
No.1
Java&Spring記事人気No1
CSSで文字の間隔を調整する方法!初心者でもわかるletter-spacingとword-spacingの使い方
No.2
Java&Spring記事人気No2
CSSのtext-alignの使い方完全ガイド!初心者でもわかる文字揃えの基本
No.3
Java&Spring記事人気No3
Bootstrap 3から5への一気移行ガイド!初心者でもわかる段階的リファクタリングの進め方
No.4
Java&Spring記事人気No4
CSSの文字間・単語間の調整と影の付け方を完全ガイド!初心者でもわかるテキスト装飾術