0Pricing
CSS Academy · レッスン

Box-Sizing:Content-BoxとBorder-Box

box-sizingによって、widthとheightの計算にpaddingとborderが含まれる方法が変わる仕組みを理解します。

「Box-Sizing:Content-BoxとBorder-Box」はCoddyKit上の無料CSS Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCSS Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 CSS Academyコースには全4レッスンが含まれています。

box-sizingの問題

デフォルトでは、CSSのwidthはコンテンツ領域だけに設定されます。パディングやボーダーを追加すると要素の実際の描画サイズが大きくなるため、混乱やエラーの原因になります。

<div class="box">200px + padding + border = 244px rendered</div>

content-box(デフォルト)

box-sizing: content-boxがデフォルトです。widthとheightはコンテンツのみに適用されます。パディングとボーダーはその上に追加されるため、設定したサイズを超えて要素が大きくなります。

border-box

box-sizing: border-boxでは、widthとheightにコンテンツ + パディング + ボーダーが含まれます。パディングやボーダーの有無にかかわらず、要素は宣言したサイズを正確に維持します。

<div class="box">Exactly 200px rendered width</div>

ユニバーサルな border-box リセット

広く推奨されているリセットを使って、border-boxをすべての要素に適用します。

<div class="demo-box">Width stays exactly 200px</div>

* ではなく inherit を使う理由

必要に応じてコンポーネントでbox-sizingを上書きできる別のパターンもあります。

<div class="demo-box">Inherited border-box sizing</div>

パーセンテージ幅 + パディング

border-boxの主な実用上の利点は、パーセンテージで幅を指定する場合にあります。20pxのパディングを持つwidth: 50%の要素は、オーバーフローせず、親要素のちょうど50%の幅を維持します。

<div class="col">50% wide column with padding, no overflow</div>

border-box に margin は含まれない

border-boxの場合でも、宣言した幅にmarginは含まれません。マージンは常に要素の外側に、設定された寸法とは別にスペースを追加します。

歴史:なぜ content-box がデフォルトなのか

かつて、ブラウザーによってボックスモデルの扱いが異なっていました。W3Cはcontent-boxを標準化しましたが、IEはborder-boxを使用していました。現在のCSSはW3C準拠のためcontent-boxをデフォルトにしていますが、ほぼすべてのプロジェクトでborder-boxに上書きしています。

DevTools でボックスモデルを確認する

Chrome DevToolsのElementsパネルには、コンテンツ、パディング、ボーダー、マージンの正確な寸法を示すボックスモデルの図が表示されます。サイズに関する問題をデバッグする最も速い方法です。

Grid と Flexbox は内部的に border-box を使用する

CSS GridとFlexboxは、要素自身のbox-sizingの設定にかかわらず、常にborder-boxの扱いでトラックとアイテムのサイズを決定します。これにより、サイズ計算を予測しやすくなります。

border-box での min/max

min-width、max-width、min-height、max-heightはwidthと同じように機能します。border-boxが有効な場合、パディングとボーダーが含まれます。

理解度チェック

box-sizing: border-boxで、width: 300px; padding: 30px;と宣言された要素のコンテンツ領域の幅は次のうちどれですか。

まとめ

box-sizing: border-boxは宣言した幅にパディングとボーダーを含めるため、予期しないサイズの拡大を防ぎます。*, *::before, *::after { box-sizing: border-box }を使って全体に適用します。どちらのボックスモデルでも、マージンが含まれることはありません。

よくある質問

「Box-Sizing:Content-BoxとBorder-Box」レッスンは無料ですか?

はい。「Box-Sizing:Content-BoxとBorder-Box」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、CSS Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 CSS Academyコースには全4レッスンが含まれています。

「Box-Sizing:Content-BoxとBorder-Box」で何を学びますか?

box-sizingによって、widthとheightの計算にpaddingとborderが含まれる方法が変わる仕組みを理解します。 ブラウザで直接実行するハンズオンコードでCSS Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

CSS Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCSS Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「Box-Sizing:Content-BoxとBorder-Box」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCSS Academyレッスンでコードを書いて実行できますか?

はい。すべてのCSS Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Width、Height、Margin、Paddingの理解
  2. ボーダーのスタイル、幅、色
  3. Box-Sizing:Content-BoxとBorder-Box
  4. OutlineとBox-Shadow
← CSS Academyに戻る