CSS box-sizingの使い方 使用する理由について

今回はbox-sizingプロパティについて解説いたします。

box-sizingを使用することによってコーディングでレイアウトを組む際に、管理が非常に楽になります。

このプロパティを知らないよ、といった方はぜひ覚えていってください!

目次

box-sizingプロパティとは?

box-sizingプロパティは簡単に言いますと、要素の幅の中に、padding(内側の余白)とborder(枠線)の幅を含めるかどうか、という指定になります。

指定する値は2種類あります。

  • content-box(要素の幅に含めない)
  • border-box(要素の幅に含める)

それぞれの値について詳しく解説いたします。

指定する値について

content-box(要素の幅に含めない)※初期値

  <div class="card">
    <dl>
      <dt>記事のタイトル</dt>
      <dd>テキスト</dd>
    </dl>
  </div>

  <style>
    .card {
      width: 300px;
      padding: 20px;
      border: 2px solid #666666;
      background-color: #ffffff;
      box-sizing: content-box;     <!-- 要素の幅に含めない -->
      text-align: center;
    }
    .card dl dt {
      font-size: 1.5rem;
      font-weight: bold;
      margin-bottom: 1em;
    }
  </style>

widthプロパティで300pxの幅を作成しておりますが、検証ツールで確認したところ、要素の幅は344pxとなっております。

box-sizing: content-boxでは、paddingとborderの幅を含めないため、300px + padding(20px × 2)+ border(2px ×2) = 344pxとなっております。

例えば、300pxの要素を3列に並べたいといった場合は、paddingやborderの幅を考慮しないと、きれいにレイアウトを組むことができなくなってしまいます。

widthを300pxではなく、256pxにすればちょうど300pxにすることはできますが、つど考えなければいけないのは大変ですね。

border-box(要素の幅に含める)

  <div class="card">
    <dl>
      <dt>記事のタイトル</dt>
      <dd>テキスト</dd>
    </dl>
  </div>

  <style>
    .card {
      width: 300px;
      padding: 20px;
      border: 2px solid #666666;
      background-color: #ffffff;
      box-sizing: border-box;     <!-- 要素の幅に含める -->
      text-align: center;
    }
    .card dl dt {
      font-size: 1.5rem;
      font-weight: bold;
      margin-bottom: 1em;
    }
  </style>

こちらはbox-sizing: border-boxで指定した場合です。

widthは300pxで指定しており、paddingとborderの幅を含んで300pxになっていることがわかります。

このようにborder-boxで指定すると、widthの値でレイアウトを考えることができるため、paddingとborderを考える必要がなくなります。

CSSでの適用方法

body {
  box-sizing: border-box;
}

基本的にbox-sizing: border-boxで使用することがほとんどのため、bodyタグに記載するようにしております。

こちらのプロパティは継承されるため、bodyタグに記載しておくと、他の要素にも反映されます。

余談ですが、基本となる文字の色や文字の大きさなどはbodyタグに宣言しておくと後々管理が楽になります。

その都度、セレクタに対して指定するのは大変なため、考慮して記載していきたいですね!

まとめ

  • box-sizing: border-boxはpaddingとborderの値を含んでくれる
  • レイアウトを考える際に、box-sizing: border-boxを指定しておくと管理が楽になる
  • CSSでの指定はbodyタグに記載する

さいごに

今回はbox-sizingについて解説させていただきました。

border-boxを指定しておかないと、レイアウトを考える際にwidthの値など、面倒な計算をしなければならなくなります。

bodyタグに適用するだけで全体に反映するため、レイアウトを組む際にはぜひお試しください。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次