目次
'margin-left' + 'border-left-width' + 'padding-left' + 'width' + 'padding-right' + 'border-right-width' + 'margin-right ' = 包含ブロックの幅
ホームページ ウェブフロントエンド htmlチュートリアル CSSドキュメントフローにおけるブロックレベルの非置換要素の水平方向の面積の計算ルール(1)_html/css_WEB-ITnose

CSSドキュメントフローにおけるブロックレベルの非置換要素の水平方向の面積の計算ルール(1)_html/css_WEB-ITnose

Jun 24, 2016 am 11:16 AM

最近、以前読んだ「CSS Definitive Guide」と CSS 標準を組み合わせて、「Basic Visual Formatting in CSS」を読んでいます。今日はメモを取ってください。
過去に、幅が明確に指定されていないレイアウトに遭遇したとき、感覚に基づいて大まかに推測することはできても、常に少し信頼性に欠けていました。最近この本を見るまでは、とても良い本だと思っていました。

まず、要素には、block、inline、inline-block 属性を表示で指定するだけでなく、置換できる、または置換できないという機能があることを知っておく必要があります。

置換要素: img、video、canvas などの安定した指定されたコンテンツは単なるプレースホルダーであり、実際のコンテンツは後で置き換えられます。 img などのコンテンツは、画像が読み込まれた後に置き換えられます。
置換不可能な要素:div、p、spanなどの内容がドキュメント内に記述されます。
ここで話したいのは主にブロックレベルの非置換要素、つまりp、divなどのblockの非置換要素とliなどのdisplay:list-itemについてです。 li は div や p と表示形式が 2 種類異なるように見えますが、実際には、前のロゴが追加されたことを除けば、li のその他の動作は基本的に同じです。

本題に入りますが、ドキュメントフロー内のブロックレベルの非置換要素の水平方向の書式設定は、それを含むブロックと 7 つの属性 (border-left、margin-left、padding-left、width、padding-right) に関連します。 、マージン右、ボーダー右)。ドキュメント フロー内のブロック レベル要素の包含ブロックは、通常、親ブロック レベル要素のコンテンツ領域を指します。つまり、box-sizing: content-box のときに width で指定される領域です。以下の式があります:

'margin-left' + 'border-left-width' + 'padding-left' + 'width' + 'padding-right' + 'border-right-width' + 'margin-right ' = 包含ブロックの幅

上記の式は、すべての場合に真でなければなりません。しかし、7 つの属性すべての値を設定しても、その合計が含まれるブロックの幅と等しくない場合、または値を auto に設定した場合はどうすればよいでしょうか?という問題がすぐに発生します。それ? ?実際には、これら 7 つの値のうち、auto に設定できるのは、margin-left、margin-right、width の 3 つの値だけです。まず、これら 3 つのプロパティを自動に設定する状況を見てみましょう。これら 3 つのプロパティは自動または非自動に設定できるため、合計 23.8 の状況があることになります。それらについては個別に説明します:

1. 値を auto に設定します。つまり、margin-left、margin-right、または width が auto に設定されます。これら 3 つの状況は、上記の公式に当てはめるだけで簡単にわかります。

2. 両方の値を auto に設定します。

2.1. margin-left と margin-right は auto に設定され、width は非 auto の値を指定します。この場合、通常の水平方向の中央揃え、margin-left と margin-right は同じ値を取得します。

2.2. margin-left と width は auto に設定され、margin-right は非 auto の値を指定します。 margin-left は 0 にリセットされ、その後 1 になります。

2.3. margin-right と width は auto に設定され、margin-left は非 auto の値を指定します。 margin-right は 0 にリセットされ、その後再び 1 になります。

3. 3 つの値を auto に設定します。 margin-left と margin-right は両方とも 0 にリセットされ、1 に基づいて計算されます。

4. どれも auto に設定されていない場合、CSS では「過剰制約」と呼ばれます。次に、ドキュメントの流れの方向が左から右の場合、margin-right の値は無視され、1 のままになります。この状況が最も誤解しやすいのですが、「過剰制約」とは、上の式の左辺が右辺よりも小さくなるようにすべての値を指定すると理解するとわかりやすいでしょう。 「3つの値が指定されており、変更の余地はない」というのが正しい理解です。したがって、margin-left、width、margin-right にすべて auto 以外の値が割り当てられている限り (たとえ 0 であっても)、それは「過剰制約」になります。

上記の内容はすべての状況をカバーしているように見えますが、そうではありません。 margin-left、margin-right が auto に設定され、width が指定された値を持っているが、border-left+ であるという別の特殊なケースがあります。 padding-left+width+padding-right+border-right> 包含ブロックの幅。上記によれば、margin-left と margin-right は同じ値を取得しますが、実際には、margin-left と margin-right は 0 にリセットされ、その後過剰に制約され、その後 1 が無視されます。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

< Progress>の目的は何ですか 要素? < Progress>の目的は何ですか 要素? Mar 21, 2025 pm 12:34 PM

この記事では、HTML< Progress>について説明します。要素、その目的、スタイリング、および< meter>との違い要素。主な焦点は、< Progress>を使用することです。タスクの完了と< Meter> statiの場合

< datalist>の目的は何ですか 要素? < datalist>の目的は何ですか 要素? Mar 21, 2025 pm 12:33 PM

この記事では、HTML< Datalist>について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

< meter>の目的は何ですか 要素? < meter>の目的は何ですか 要素? Mar 21, 2025 pm 12:35 PM

この記事では、html< meter>について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化< Meter> < Progress>およびex

ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? Mar 20, 2025 pm 05:56 PM

この記事では、モバイルデバイスのレスポンシブWebデザインに不可欠なViewportメタタグについて説明します。適切な使用により、最適なコンテンツのスケーリングとユーザーの相互作用が保証され、誤用が設計とアクセシビリティの問題につながる可能性があることを説明しています。

< iframe>の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? < iframe>の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? Mar 20, 2025 pm 06:05 PM

この記事では、< iframe>外部コンテンツをWebページ、その一般的な用途、セキュリティリスク、およびオブジェクトタグやAPIなどの代替案に埋め込む際のタグの目的。

HTMLは初心者のために簡単に学ぶことができますか? HTMLは初心者のために簡単に学ぶことができますか? Apr 07, 2025 am 12:11 AM

HTMLは、簡単に学習しやすく、結果をすばやく見ることができるため、初心者に適しています。 1)HTMLの学習曲線はスムーズで簡単に開始できます。 2)基本タグをマスターして、Webページの作成を開始します。 3)柔軟性が高く、CSSおよびJavaScriptと組み合わせて使用​​できます。 4)豊富な学習リソースと最新のツールは、学習プロセスをサポートしています。

HTML、CSS、およびJavaScriptの役割:コアの責任 HTML、CSS、およびJavaScriptの役割:コアの責任 Apr 08, 2025 pm 07:05 PM

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

HTMLでの開始タグの例は何ですか? HTMLでの開始タグの例は何ですか? Apr 06, 2025 am 12:04 AM

Anexampleapalofastartingtaginhtmlis、それはaperginsaparagraph.startingtagsaresentionentientiontheyinitiateelements、definetheirtypes、およびarecrucialforurturingwebpagesandcontingthomedomを構築します。

See all articles