目次
包含ブロックの概要
ホームページ ウェブフロントエンド htmlチュートリアル CSS3 包含ブロックとその配置の決定_html/css_WEB-ITnose

CSS3 包含ブロックとその配置の決定_html/css_WEB-ITnose

Jun 24, 2016 am 11:28 AM

レイアウトについては毎回混乱するので、非常に詳細な記事をインターネットで見つけました。元の記事のリンクを再投稿しました: http://w3help.org/zh-cn/kb/ 008.html

包含ブロックの概要

CSS2.1 では、多くのボックスの位置とサイズの計算は長方形の境界に依存します。この長方形は包含ブロックと呼ばれます。 一般に、(要素) によって生成されたボックスは、その子孫要素の包含ブロックの役割を果たします。「(要素の) ボックスは、その子孫ノードの包含ブロックを構築します」と言えます。包含ブロックは相対的な概念です。

<div>    <table>        <tr>            <td>hi</td>        </tr>    </table></div>
ログイン後にコピー

上記のコードを例にとると、DIV と TABLE は両方ともブロックを含んでいます。 DIV は TABLE を含むブロックであり、TABLE は TD を含むブロックですが、これは絶対的なものではありません。

「ボックスの包含ブロック」とは、ボックスが構築された包含ブロックではなく、「ボックスが存在する包含ブロック」を指します。たとえば、上記のコードでは、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>
ログイン後にコピー

上記のコードでは、テキストはデフォルトで左から右に配置されます。赤 XX、青 XX、黄 XX はすべて絶対配置要素であり、それらを含むブロックは相対配置 SPAN です。 標準によれば、それらの位置は、包含ブロックを参照する必要があります。その包含ブロックの左上端は、SPAN によって形成される最初のボックスの上端と左端のパディング端 (つまり、最初の行の灰色の部分) です。含まれているブロックの右と左のパディング境界は次のとおりです。 以下は、SPAN によって生成された最後のボックスの右と下のパディング境界 (最後の行の灰色の部分) です。


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>
ログイン後にコピー

上記の境界は領域を囲むことができません。その場合、包含ブロックの幅は負になります。

2) 'direction' が 'rtl' の場合、包含ブロックの上端と右側は祖先要素によって生成された最初のボックスの上端と右端のパディング エッジであり、左端と下端は親要素によって生成されます。最後のボックスの左と下のパディングエッジ

サンプルコード:

<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>
ログイン後にコピー


其他情况下,如果祖先元素不是行内元素,那么包含块的区域应该是祖先元素的内边距边界

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

公式アカウントのキャッシュの更新の難しさ:バージョンの更新後のユーザーエクスペリエンスに影響を与える古いキャッシュを回避する方法は? 公式アカウントのキャッシュの更新の難しさ:バージョンの更新後のユーザーエクスペリエンスに影響を与える古いキャッシュを回避する方法は? Mar 04, 2025 pm 12:32 PM

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

HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? Mar 17, 2025 pm 12:27 PM

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

HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? Mar 17, 2025 pm 12:20 PM

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

WebページのPNG画像にストローク効果を効率的に追加する方法は? WebページのPNG画像にストローク効果を効率的に追加する方法は? Mar 04, 2025 pm 02:39 PM

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

&lt; datalist&gt;の目的は何ですか 要素? &lt; datalist&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:33 PM

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

&lt; Progress&gt;の目的は何ですか 要素? &lt; Progress&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:34 PM

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

HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? Mar 12, 2025 pm 04:05 PM

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

&lt; meter&gt;の目的は何ですか 要素? &lt; meter&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:35 PM

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

See all articles