CSS 盒子模型


CSS ボックスモデル (Box Model)

すべてのHTML要素はボックスとみなすことができます。CSSでは、"box model"という用語は設計およびレイアウトの際に使用されます。

CSSボックスモデルは本質的にボックスであり、周囲のHTML要素を包み込みます。それには、マージン、ボーダー、パディング、および実際のコンテンツが含まれます。

ボックスモデルにより、他の要素と周囲の要素のボーダーの間のスペースに要素を配置できます。

以下の画像はボックスモデル(Box Model)を示しています。


CSS box-model

各部分の説明:

  • Margin(外边距)- ボーダーの外側の領域をクリアします。マージンは透明です。
  • Border(边框)- パディングとコンテンツの周囲を囲むボーダー。
  • Padding(内边距)- コンテンツの周囲の領域をクリアします。パディングは透明です。
  • Content(内容)- ボックスのコンテンツ。テキストと画像を表示します。

すべてのブラウザで要素の幅と高さを正しく設定するには、ボックスモデルがどのように機能するかを知る必要があります。


要素の幅と高さ

Remark重要:CSS要素のwidthプロパティとheightプロパティを指定する場合、コンテンツ領域の幅と高さを設定するだけです。完全なサイズの要素を得るには、パディング、ボーダー、マージンを追加する必要があることを理解してください。

以下の例の要素の合計幅は450pxです。

实例

div { width: 300px; border: 25px solid green; padding: 25px; margin: 25px; }

尝试一下 »

自分たちで計算してみましょう:
300px (宽)
+ 50px(左 + 右パディング)
+ 50px(左 + 右ボーダー)
+ 50px(左 + 右マージン)
= 450px

考えてみてください。利用できるスペースが250ピクセルしかないとします。合計幅が250ピクセルの要素を設定しましょう。

实例

div { width: 220px; padding: 10px; border: 5px solid gray; margin: 0; }

尝试一下 »

最終的な要素の合計幅の計算式は次のとおりです。

要素の合計幅 = 幅 + 左パディング + 右パディング + 左ボーダー + 右ボーダー + 左マージン + 右マージン

要素の合計高さの最終的な計算式は次のとおりです。

要素の全高 = 高さ + 上部パディング + 下部パディング + 上ボーダー + 下ボーダー + 上マージン + 下マージン


ブラウザの互換性の問題

ページに適切なDTDが設定されていれば、ほとんどのブラウザは上記の図のようにコンテンツを表示します。しかし、IE 5および6の表示は正しくありません。W3Cの仕様によれば、要素のコンテンツが占めるスペースはwidthプロパティで設定され、コンテンツ周囲のpaddingおよびborderの値は別途計算されます。残念ながら、IE5.Xおよび6は互換モードで独自の非標準モデルを使用します。これらのブラウザのwidthプロパティはコンテンツの幅ではなく、コンテンツ、パディング、ボーダーの幅の合計です。

この問題を解決する方法もありますが、現在のところ最善の解決策はこの問題を回避することです。つまり、指定した幅を持つパディングを要素に追加するのではなく、パディングやマージンを要素の親要素と子要素に追加するようにしてください。

IE8およびそれ以前のIEバージョンは、パディングの幅とボーダーの幅のプロパティ設定をサポートしていません。

IE8およびそれ以前のバージョンの非互換問題を解決するには、HTMLページで <!DOCTYPE html> を宣言するだけで済みます。

其他扩展