CSSドキュメントフローにおけるブロックレベルの非置換要素の水平方向の面積の計算ルール(1)_html/css_WEB-ITnose
最近、以前読んだ「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 が無視されます。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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

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

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

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

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

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

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

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