CSS3 包含ブロックとその配置の決定_html/css_WEB-ITnose
レイアウトについては毎回混乱するので、非常に詳細な記事をインターネットで見つけました。元の記事のリンクを再投稿しました: http://w3help.org/zh-cn/kb/ 008.html
包含ブロックの概要
CSS2.1 では、多くのボックスの位置とサイズの計算は長方形の境界に依存します。この長方形は包含ブロックと呼ばれます。 一般に、(要素) によって生成されたボックスは、その子孫要素の包含ブロックの役割を果たします。「(要素の) ボックスは、その子孫ノードの包含ブロックを構築します」と言えます。包含ブロックは相対的な概念です。
<div> <table> <tr> <td>hi</td> </tr> </table></div>
「ボックスの包含ブロック」とは、ボックスが構築された包含ブロックではなく、「ボックスが存在する包含ブロック」を指します。たとえば、上記のコードでは、TABLE の包含ブロックは、TABLE 自体によって作成された包含ブロックではなく、DIV によって作成された包含ブロックを参照します。 TABLE によって構築される包含ブロックを TD の包含ブロックと呼ぶことができます。
すべてのボックスは、その包含ブロックに対して相対的な位置を持ちますが、包含ブロックによって境界付けられることはなく、オーバーフローする可能性があります (包含ブロック)。包含ブロックに「overflow」属性を設定して、オーバーフローした子孫要素を処理できます。
ブロックを含むという概念は非常に重要です。なぜなら、自動幅と高さの値の計算、フローティング要素の位置決め、絶対に配置された要素の位置決めなど、ビジュアル フォーマット モデルの多くの理論的知識がこの概念に関連しているからです。 。含まれているブロックを理解していないと、それに基づいてその後の理論を理解することができません。
包含ブロックの決定とその範囲
上記からわかるように、要素ボックスの位置とサイズはその包含ブロックに関連しており、要素はその子孫要素の包含ブロックを作成します。
つまり、要素を含むブロックがその親要素であるということですか?ブロックを含む領域は親要素のコンテンツ領域ですか? 答えは否定的です。ここでは、各種要素にブロックが含まれるかどうかの判定と、ブロックが含まれる領域の範囲について説明します。 基準を満たす祖先要素がない場合、その要素の包含ブロックが最初の包含ブロックになります。
包含ブロックの決定の全体的なフローチャートは次のとおりです:
ルート要素は、ドキュメント ツリーの最上位の要素です。親ノードはありません。
ルート要素が存在する包含ブロックを初期包含ブロックと呼びます。具体的には、クライアントによって異なります。
(X)HTML では、ルート要素は html 要素です (ただし、ブラウザーによっては body 要素が誤って使用されます)。
最初の包含ブロックの方向属性はルート要素と同じです。
要素の位置が「相対」(相対配置) または「静的」(静的配置) の場合、その要素を含むブロックは、最も近いブロック レベルであるセル (テーブル セル) によって決定されます。または inline-block (inline-block) の祖先要素のコンテンツ ボックス 1 が作成されます。
要素が「position」属性を宣言していない場合、「position」のデフォルト値は「static」になります。
<table id="table1"> <tr> <td id="td1"> <div id="div1" style="padding:20px;border:1px solid red;"> <span> <strong id=”greed” style="position:relative;">greed is</strong> good 999999 </span> </div> </td> </tr></table>
要素包含ブロック
table1 body
td1 table1
div1 td1
greed div1
SPAN div1内の要素に含まれるテキストの位置がわかる、包含ブロックの領域div1 によって作成されたものです。コンテンツ境界は内部境界です。
要素が固定位置 (「position:fixed」) 要素の場合、その要素を含むブロックは現在のビジュアル ウィンドウ 2 になります。
絶対配置要素
一般に、絶対配置 (「position:Absolute」) 要素を含むブロックは、「absolute」、「relative」、または「fixed」の 'position' 属性を持つ最も近い祖先要素から作成されます。 。
その祖先要素がインライン要素の場合、それを含むブロックはその祖先要素の ‘direction’ 属性に依存します
<p style="border:1px solid red; width:200px; padding:20px;"> T <span style="background-color:#C0C0C0; position:relative;"> 这段文字从左向右排列,红 XX 和 蓝 XX 和黄 XX 都是绝对定位元素,它的包含块是相对定位的SPAN。 可以通过它们绝对定位的位置来判断它们包含块的边缘。 <em style="position:absolute; color:red; top:0; left:0;">XX</em> <em style="position:absolute; color:yellow; top:20px; left:0;">XX</em> <em style="position:absolute; color:blue; bottom:0; right:0;">XX</em> </span></p>
inline 要素内で形成される包含ブロックはブラウザごとに異なり、互換性の問題があります。これは上記の例で証明できます。青い「○○」の位置はブラウザごとに異なります。
サンプルコード:
<p style="border:1px solid red; width:200px; padding:20px;"> TEXT TEXT TEXT <span style="background-color:#C0C0C0; position:relative;"> 这段文字从左向右排列,红 XX 和 蓝 XX 和黄 XX 都是绝对定位元素,它的包含块是相对定位的SPAN。 可以通过它们绝对定位的位置来判断它们包含块的边缘。 <em style="position:absolute; color:red; top:0; left:0;">XX</em> <em style="position:absolute; color:yellow; top:20px; left:0;">XX</em> <em style="position:absolute; color:blue; bottom:0; right:0;">XX</em> </span></p>
上記の境界は領域を囲むことができません。その場合、包含ブロックの幅は負になります。
サンプルコード:
<p style="border:1px solid red; width:200px; padding:20px; direction:rtl;"> T <span style="background-color:#C0C0C0; position:relative;"> 这段文字从右向左排列,红 XX 和 蓝 XX 和黄 XX 都是绝对定位元素,它的包含块是相对定位的SPAN。可以通过它们绝对定位的位置来判断它们…… <em style="position:absolute; color:red; top:0; left:0;">XX</em> <em style="position:absolute; color:yellow; top:20px; left:0;">XX</em> <em style="position:absolute; color:blue; bottom:0; right:0;">XX</em> </span></p>
其他情况下,如果祖先元素不是行内元素,那么包含块的区域应该是祖先元素的内边距边界

ホット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)

ホットトピック











公式アカウントのWebページはキャッシュを更新します。これはシンプルでシンプルで、ポットを飲むのに十分な複雑です。あなたは公式のアカウントの記事を更新するために一生懸命働きましたが、ユーザーはまだ古いバージョンを開くことができますか?この記事では、この背後にあるtwist余曲折と、この問題を優雅に解決する方法を見てみましょう。それを読んだ後、さまざまなキャッシュの問題に簡単に対処でき、ユーザーが常に新鮮なコンテンツを体験できるようになります。最初に基本について話しましょう。それを率直に言うと、アクセス速度を向上させるために、ブラウザまたはサーバーはいくつかの静的リソース(写真、CSS、JSなど)やページコンテンツを保存します。次回アクセスするときは、もう一度ダウンロードすることなく、キャッシュから直接検索できます。自然に高速です。しかし、このことは両刃の剣でもあります。新しいバージョンはオンラインです、

この記事では、ブラウザのユーザー入力を直接検証するために、必要、パターン、MIN、MAX、および長さの制限などのHTML5フォーム検証属性を使用して説明します。

記事では、HTML5クロスブラウザーの互換性を確保するためのベストプラクティスについて説明し、機能検出、プログレッシブエンハンスメント、およびテスト方法に焦点を当てています。

この記事では、CSSを使用したWebページへの効率的なPNG境界追加を示しています。 CSSはJavaScriptやライブラリと比較して優れたパフォーマンスを提供し、微妙または顕著な効果のために境界幅、スタイル、色を調整する方法を詳述していると主張しています

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

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

この記事では、html5&lt; time&gt;について説明します。セマンティックデート/時刻表現の要素。 人間の読み取り可能なテキストとともに、マシンの読みやすさ(ISO 8601形式)のDateTime属性の重要性を強調し、Accessibilitを増やします

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