CodeGym/コース/Frontend SELF JA/コンテンツとボーダーモデル

コンテンツとボーダーモデル

使用可能

4.1 box-sizingプロパティ

CSSのbox-sizingプロパティは要素のサイズ測定モデルを管理するための強力なツールだよ。 幅や高さに加えて、パディング、ボーダー、外部マージンの計算方法を決定するんだ。 ここではbox-sizingがどのように機能するか詳しく見ていって、 どうやってウェブページのレイアウトに影響を与えるかを説明するよ。

主要なbox-sizingのモデル

Content-box (コンテンツモデル)

content-boxの値はすべての要素のデフォルト値だよ。このモデルでは要素のサイズ (widthheight)はコンテンツのサイズだけを決定して、パディングとボーダーは含まないんだ。 つまり、パディングとボーダーは要素の全体幅と高さに追加されるってこと。

Border-box (ボーダーモデル)

border-boxの値は測定モデルを変更して、要素のサイズ(widthheight) にパディングとボーダーを含めるんだ。これにより、計算とサイズ管理が簡単になって、 特にレスポンシブデザインを作るときに便利だよ。

box-sizingの使い方例:

CSS
.box {
  background-color: #3498db;
  color: white;
  padding: 20px;
  border: 5px solid #2c3e50;
  margin: 10px;
  width: 200px;
  height: 100px;
}

.content-box {
  box-sizing: content-box;
}

.border-box {
  box-sizing: border-box;
}
HTML
<div class="box content-box">Content-box: 幅と高さはコンテンツのみを含む。</div>
<div class="box border-box">Border-box: 幅と高さはパディングとボーダーを含む。</div>

コードの説明:

  • .box: すべてのボックスに対する基本スタイルで、パディング、ボーダー、サイズを含む
  • .content-box: box-sizing: content-boxを適用した要素で、幅と高さはコンテンツのみを含む
  • .border-box: box-sizing: border-boxを適用した要素で、幅と高さはパディングとボーダーを含む

4.2 box-sizingがレイアウトに与える影響

Content-boxモデル

box-sizing: content-box;を使うと、パディングとボーダーは要素の全体幅と高さに追加されるんだ。 これにより、要素のサイズや位置を計算するときに追加の考慮が必要になることがあるよ。

使い方の例

この場合、要素の全体の幅は 200px + 20px (padding) * 2 + 5px (border) * 2 = 250pxになり、 全体の高さは100px + 20px (padding) * 2 + 5px (border) * 2 = 150pxになるよ。

CSS
.content-box {
  box-sizing: content-box;
  width: 200px;
  height: 100px;
  padding: 20px;
  border: 5px solid #000;
}
HTML
<div class="box content-box">Content-box: 幅と高さはコンテンツのみを含む。</div>

Border-boxモデル

box-sizing: border-box;を使うと、パディングとボーダーは指定された要素の幅と高さに含められるんだ。 これにより、特にレスポンシブレイアウトを作る際に要素のサイズ計算が簡単になるよ。

使い方の例:

CSS
.border-box {
  box-sizing: border-box;
  width: 200px;
  height: 100px;
  padding: 20px;
  border: 5px solid #000;
}
HTML
<div class="box border-box">Border-box: 幅と高さはパディングとボーダーを含む。</div>

4.3 レスポンシブレイアウトの作成

box-sizing: border-box;を使うことで、要素のサイズがパディングとボーダーを含むため、予期しないオーバーフローを防ぎながらレスポンシブレイアウトを簡単に作成できるんだ。

使い方の例:

CSS
* {
  box-sizing: border-box;
}

.container {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  padding: 10px;
  background-color: #f4f4f4;
}

.item {
  flex: 1 1 calc(33.333% - 20px);
  padding: 20px;
  border: 5px solid #3498db;
  background-color: #fff;
}
HTML
<div class="container">
  <div class="item">アイテム 1</div>
  <div class="item">アイテム 2</div>
  <div class="item">アイテム 3</div>
  <div class="item">アイテム 4</div>
  <div class="item">アイテム 5</div>
  <div class="item">アイテム 6</div>
</div>

コードの説明:

  • * { box-sizing: border-box; }: すべてのページの要素にボーダーモデルを適用してサイズ管理を簡単にする
  • .container: アダプティブなレイアウトを持つFlexコンテナ
  • .item: パディングとボーダーを含む幅の均一分配を持つFlex要素

4.4 インセット付き固定サイズ

box-sizing: border-box;を使うことで、インセットを気にせずに要素の固定サイズを簡単に設定できるんだ。

使い方の例:

CSS
.fixed-size {
  box-sizing: border-box;
  width: 300px;
  height: 150px;
  padding: 20px;
  border: 5px solid #2ecc71;
  background-color: #ecf0f1;
  text-align: center;
  line-height: 150px; /* 垂直方向にテキストを中央揃え */
}
HTML
<div class="fixed-size">
  固定サイズ
</div>

コードの説明:

  • .fixed-size: パディングとボーダーを含み、正確な寸法管理を可能にする300x150ピクセルの固定サイズ要素
1
タスク
Frontend SELF JA,  レベル 16レッスン 4
ロック未解除
ボックスサイズモデル
ボックスサイズモデル
1
タスク
Frontend SELF JA,  レベル 16レッスン 4
ロック未解除
固定サイズ
固定サイズ
コメント
  • 人気
  • 新規
  • 古い
コメントを残すには、サインインしている必要があります
このページにはまだコメントがありません