CSSボックスモデル・ビジュアライザー

マージン、ボーダー、パディング、コンテンツの寸法を調整して、CSSボックスモデルをライブで確認します。

寸法

パディング(px)

ボーダー(px)

マージン(px)

マージン
ボーダー
パディング
200 × 120

  

使い方

  1. ボックスモデルの値を入力: フィールドまたはインタラクティブなスライダーでマージン、ボーダー、パディング、コンテンツの寸法を定義します。
  2. ビジュアライゼーションを探索: 入れ子になったボックスの古典的な図がリアルタイムで更新されます, マージン(オレンジ)、ボーダー(黄色)、パディング(緑)、コンテンツ(青)、すべて明確にラベル付けされています。
  3. CSSをコピー: CSSをコピーをクリックして、設定された要素の完全なボックスモデルプロパティを取得します。

なぜCSSボックスモデルビジュアライザーを使うのか?

CSSボックスモデルはWebレイアウトの最も基本的な概念の1つです, そして特にbox-sizingの値、マージンの結合、ボーダーのサイジングを混合する場合、最も一般的なバグの源の1つです。このインタラクティブビジュアライザーはボックスモデルを具体的で目に見えるものにします: 値を調整すると、マージン、ボーダー、パディングがコンテンツの周りにどのようにスタックするかが即座に表示されます。CSSの学習、デバッグ、教育に不可欠です。

機能

よくある質問

content-boxとborder-boxの違いは?

content-box(デフォルト)では、widthとheightはコンテンツエリアにのみ適用されます, パディングとボーダーは要素の総サイズに追加されます。border-boxでは、widthとheightにパディングとボーダーが含まれるため、サイズがより予測可能になります。ほとんどの最新のCSSリセットは、すべての要素にbox-sizing: border-boxを適用します。

マージンの結合とは?

2つの垂直マージンが触れ合う場合(隣接するブロック要素間、または親と最初/最後の子の間)、それらは2つの値の大きい方に等しい1つのマージンに結合します。これは、flexまたはgridの子、またはパディングやボーダーを持つ要素では発生しません。

インライン要素の下にある余分なスペースを取り除くには?

<img>などのインライン要素には、line-heightのベースラインアラインメントによって引き起こされる小さなスペースがその下にあります。要素にdisplay: blockを設定するか、vertical-align: bottom、または親にfont-size: 0を設定して修正します。

CSSボックスモデルが実際に定義するもの

CSSボックスモデルは、ウェブページ上のすべての要素の矩形表現です。各要素には4つの同心ボックスがあります: contentボックス (テキスト、画像、子要素が住む場所)、paddingボックス (コンテンツと境界線の間、可視境界の内側のスペース)、borderボックス (パディングの周りに描かれる可視のアウトライン)、marginボックス (境界線の外側の透明なスペースで、この要素を隣接要素から分離します)。要素の合計可視サイズは content + padding + border です; margin は不可視ですが他の要素を押しのけます。

重要な概念はbox-sizingです。デフォルト (box-sizing: content-box、CSS 1仕様の値) では、widthheightプロパティはcontentボックスのみに適用されます。width: 200px; padding: 20px; border: 2px solidを設定すると、合計レンダリング幅は 200 + 40 + 4 = 244ピクセルです。これは直感に反します: 「200px幅」の要素が実際には244ピクセルの水平スペースを取ります。box-sizing: border-boxの代替 (CSS 3で追加) はこれを逆転させます: widthプロパティは padding と border を含む合計可視サイズで、content領域は収まるよう縮小します。border-boxはほとんどの開発者が期待するものです; 2012年のPaul Irishの * { box-sizing: border-box } CSSリセットを通じて事実上の標準になりました。

ボックスモデルを理解することは重要です、なぜならレイアウトバグはほぼ常にどの値がどのボックスに適用されるかについての混乱に起因するからです。「なぜ要素が設定したよりも広いのか?」は content-box のサプライズです。「なぜ私のmarginは兄弟を下に押し下げないのか?」は通常、margin の崩壊です。「なぜ padding-top: 50% が奇妙に振る舞うのか?」はパーセンテージのパディングが親の幅 (高さではなく) に対して計算されるからです。すべてのCSS開発者はこれらの混乱に遭遇します; このビジュアライザーは値を調整し結果のボックスジオメトリをリアルタイムで見ることでそれらを具体的にします。

このツールが内部でどのように動くか

インタラクティブな図は、各ボックス (marginはオレンジ、borderは黄色、paddingは緑、contentは青) に対応するネストされた色付きdivの連続です。入力値を変更すると、JavaScript は図のdivのインラインstyle属性を更新し、数値的および視覚的に値を反映します。プロポーションはプレビュー領域に収まるようスケールされます; 絶対ピクセル値は典型的な入力で図を画面外に押し出します。

合計サイズの計算は box-sizing モードに依存します。content-box の場合: 合計幅 = contentの幅 + padding-left + padding-right + border-left + border-right。border-box の場合: 合計幅 = width 値 (padding と border は content領域から引かれます)。ツールは box-sizing を切り替えると同時に両方のモードを計算するので、直接比較できます。

生成されたCSS出力は入力をプロパティ値として使用します: box-sizing: border-box; width: 200px; padding: 10px 20px; border: 2px solid; margin: 1rem auto;。これをスタイルシートに直接コピーして対応するクラスを適用してください。何もブラウザを離れません; すべては JavaScript でローカルに実行されます。分析なし、バックエンドなし、アカウントなし。リロードすると状態は消えます。

CSSボックスモデルの簡単な歴史

実世界のワークフロー

よくある落とし穴とその意味

プライバシー: すべてはブラウザ内で動作する

CSS学習と視覚化ツールには2つの形があります: クライアントサイドJavaScriptを実行するシンプルなHTMLページ (プライベート、高速、セットアップなし) と保存されたプロジェクト付きのクラウドエディタ (協調的だがプライバシーのトレードオフあり)。このツールは最初の種類です。入力した値、box-sizing トグル状態、生成されたCSS: すべてブラウザセッションに留まります。ページをリロードすると、最初にCSSをコピーしない限り状態は消えます。

ボックスモデルの値が機密情報を含むことはまれなので、ここでのプライバシーの賭けは低いです。それでも、分析の欠如が重要です: 試行錯誤プロセスが記録されることなく自由に実験できます。学生や研修生がサードパーティプラットフォームでアカウントを登録することが摩擦点となる教室や企業研修の設定で特に役立ちます。これはバックエンドなしの単一の静的ページで、ロックダウンされたエンタープライズマシンを含む任意のブラウザで使用できます。

別のツールが正しい選択になるとき

その他のよくある質問

ユニバーサル * { box-sizing: border-box } を使うべきですか?

ほとんどのプロジェクトでは、はい。Paul Irishの2012年の提案は今や業界のデフォルトであり、ほとんどの開発者が width と height がどのように機能するかを期待する方法と一致します。Bootstrap、Tailwind、Bulma、Material UI などのフレームワークはデフォルトで border-box を出荷します。2026年に始まる現代のプロジェクトは、リセットの最上部に *, *::before, *::after { box-sizing: border-box; } を設定し、box-sizing について再び考える必要はめったにありません。border-box が物事を台無しにする個々の要素に対しては、content-box への特定のオーバーライドが可能です。

なぜ私のmarginは兄弟を押すのではなく親を下に押すのですか?

これは margin の崩壊です。子の上 margin が padding/border なしで親の上端に出会うとき、子の margin は「脱出」し代わりに親に適用されます。修正: 親に padding-top: 1px を追加 (任意の値が機能)、border: 1px solid transparent を追加、親を flex または grid コンテナに設定 (これらのモードでは崩壊が抑制される)、または親に display: flow-root を使用 (新しいブロックフォーマッティングコンテキストを確立する明示的な現代のルール)。これらすべてが margin が崩壊するのを防ぎます。

margin: auto と margin: 0 の違いは何ですか?

margin: 0 は margin なしを意味します; 要素は隣接要素に対して平らに座ります。margin: auto はブラウザが残りの水平スペースを分配するために margin を計算することを意味し、典型的にブロック要素を中央に配置するために使用されます: margin-left: auto; margin-right: auto; は残りのスペースを均等に分割します。margin: auto auto auto auto (または shorthand margin: auto) は flex コンテナ内で水平方向と垂直方向の両方で中央に配置します。flex/grid の外では、水平の auto margin のみが機能します。

outline は border とどう違いますか?

Outline は要素の周りに描画されますが、ボックスモデルの外側にあります: 要素のサイズに加算されず、隣接要素を押し離しません。Border はボックスモデルの一部であり、レンダリングされたサイズに加算されます。Outline は典型的にフォーカスリング (:focus-visible outline) に使用され、レイアウトをシフトさせずに目に見えるインジケータが必要なときに使用されます。Border は線が要素の構造の一部であるべきときに使用されます。代替のフォーカスインジケータを提供せずに outline: none を削除しないでください; そうするとキーボードアクセシビリティが壊れます。

なぜ margin-inline-start のような論理プロパティを使うのですか?

論理プロパティ (margin-block-start、padding-inline など) はドキュメントの書字方向に適応します。英語 (左から右) では、margin-inline-startmargin-left と同じです。アラビア語またはヘブライ語 (右から左) では、自動的に margin-right になります。複数の言語をサポートするサイトでは、論理プロパティはCSSの国際化を自動化します。英語のみのサイトでは、効果的には同等ですが、より明確に意図を伝えます: 「この margin は左側にある」ではなく「この margin はテキストフローの始まりにある」。

固定アスペクト比のボックスを作成するにはどうしますか?

現代の方法は aspect-ratio CSSプロパティです: div の aspect-ratio: 16/9 はその高さを自動的に幅の 9/16 にします。すべての現代のブラウザでサポートされています (2021+)。レガシーテクニックは padding-top をパーセンテージとして使用します: padding-top: 56.25% の div は 16:9 の比率を作成します (9/16 = 56.25%)。padding-top のトリックは引き続き機能しますが、プロパティ構文の方がクリーンです。新しいコードには aspect-ratio を使用してください; レガシーハックは広いブラウザサポートを必要とするTailwindやその他のツールに残ります。

関連ツール

CSSマルチカラム・ジェネレーター CSSグリッドジェネレーター CSSフレックスボックス・ジェネレーター CSS Border Radiusジェネレーター