web-dev-qa-db-ja.com

<div>を入れ子にしているときに<p>を入れ子にすることはできませんか?

通常、<p>は次のようにネストしません。

<p>The following:
    <p>one</p>
    <p>two</p>
</p>

代わりに<div>を使用してそのようにネストします。しかし、今日私は<p>を使用しましたが、EmacsとGoogle Chromeはどちらも新しい<p>が表示されるとすぐに、外側の<p>が閉じられたと見なします。が開始されます(DOCTYPEはHTML 4.01 Strictです)。

<p><div>にすぎないと思っていましたが、事前に定義されたマージンとパディングがあるだけですが、<p>をネストできないのは本当ですか?もしそうなら、どのルールはそれができないと言っていますか?

44
nonopolarity

パラグラフはパラグラフ..であり、HTMLの定義方法です(HTMLはnot XMLです)。

<p>(またはotherブロックレベルの要素)は暗黙的に閉じる開いている<p>になります。

ごと 9.3.1段落:P要素 HTML 4.01仕様の=:

P要素は段落を表します。 cannotブロックレベルの要素(P自体を含む)を含みます。


これはHTMLの解析方法であり、<div>でも暗黙的に段落を閉じていたことに注意してください。

ただし、<span>display:block;<p>notブロックであるため、<span>をクローズしますnotレベル要素。

つまり、CSSはHTML処理のこの段階では無関係であり、要素がブロックレベルの要素であるかどうかを判断するとき、CSSはDOM /パーサーにとって無関係です。ない。 CSSが動的に、またはまだロードされていないスタイルシートを介して適用される場合を検討してください。適用されたCSSはDOMを変更しません。


HTML5(working-draft)仕様では、HTML4仕様に上記の言語は含まれていませんが、段落をcontainer for phasing content として定義し、さらに 段落のセクション があります。

P要素内にネストできるHTML5要素のリスト? に対する受け入れられた回答は、<p>要素がHTML5にネストできないことを示しています。ドキュメンテーションの重要なフレーズは次のとおりです。「フレーズのコンテンツ[<p>要素を含まない]段落のフォーム」。さらに、HTML5は、多くの点で下位互換性を維持しようとしていますが、 "コンテンツモデルと属性値の制限" に根拠があります。

特定の要素は(通常は歴史的な理由により)少し偏心した方法で解析されますであり、コンテンツモデルの制限は、作成者がこれらの問題にさらされるのを避けることを目的としています。

この動作は フローコンテンツのHTML5 WG wikiエントリ から参照されます。

P要素のネストおよびp要素の内容に関するHTML5の制限は、引用によるものです。「パーサーの特殊性」pが自動クローズされる原因 ..

64
user166390

HTML 4.01仕様のセクション9.3.1 から

P要素は段落を表します。ブロックレベルの要素(P自体を含む)を含めることはできません。

11
Antimony