ol / ulは<p>の内側または外側にある必要がありますか?


292

これら2つの間で標準に準拠しているのはどれですか。

<p>Text text text ...
    <ol>
        <li>First element</li>
    </ol>
</p>
<p>
    Other text text ...
</p>

または

<p>
    Text text text ...
</p>
<ol>
    <li>First element</li>
</ol>
<p>
    Other text text ...
</p>

40
@oded:コンテキストは重要ですか?
ダイナミック

回答:


422

簡単に言えば、ol要素はp要素内では法的に許可されていません。

その理由を知るために、スペックに行きましょう!HTML仕様に慣れることができれば、質問や好奇心の多くに答えることができます。あなたはolがの中に住めるかどうか知りたいですp。そう…

4.5.1 p要素

カテゴリ: フローコンテンツ触知可能なコンテンツ
コンテンツモデル: フレージングコンテンツ


4.5.5 ol要素

カテゴリ: フローコンテンツ
コンテンツモデル:0個以上のliおよびスクリプトをサポートする要素。

最初の部分では、p要素はフレージングコンテンツspanおよびのような「インライン」要素strong)のみを含むことができると述べています。

2番目の部分は、olsがフローコンテンツであることを示していますpおよびのような「ブロック」要素div)。そのため、内では使用できませんp


olsとその他flow contentは、次のような他の要素で使用できますdiv

4.5.13 div要素

カテゴリ: フローコンテンツ触知可能なコンテンツ
コンテンツモデル: フローコンテンツ


9
@リンク:はい、w3.orgは少し技術的です。それでも、いつ、何を理解したら正しいのかは間違いありません。
nyson 2013年

5
@Sidが仕様とその用語のいくつかを説明することは間違いなく役立つと思います。彼がもう少し進んだ場合、それは素晴らしい答えになります。彼はまた、質問に明示的に答えることができます:)。そのための編集を追加しました。
studgeek 2013年

1
読むのはひどい?そうは思わないで、に行ってください4.4.1 The p element、作者もfantastic sentencesそのことについて話します
ハイメ・ハブツェル

1
@dynamic 文書を読みやすくするために、常にMDNのHTMLリファレンスにアクセスします。
Bonk

1
@AaronLSカインド!ブラウザからHTMLが返されると(たとえば、開発ツールやから.innerHTML)、要素ツリーから再生成されます。そのため、Chromeは、元のHTMLから有効なツリーを作成し、そのツリーから新しいHTMLを生成するほど、HTMLを調整していません。
s4y、

40

二番目。最初は無効です。

  • 段落にリストを含めることはできません。
  • 段落が完全に単一のリスト項目内に含まれていない限り、リストに段落を含めることはできません。

ブラウザは次のように処理します。

<p>tetxtextextete 
<!-- Start of paragraph -->
<ol>
<!-- Start of ordered list. Paragraphs cannot contain lists. Insert </p> -->
<li>first element</li></ol>
<!-- A list item element. End of list -->
</p>
<!-- End of paragraph, but not inside paragraph, discard this tag to recover from the error -->
<p>other textetxet</p>
<!-- Another paragraph -->


7

実際にはインライン要素を内にのみ置く必要があるpので、あなたの場合olは外側の方が良いです


2
これは@David Dorwardの返信と同じで、あなたが気に入らなかったものです。
ceejayoz

5
<p>tetxetextex</p>
<ol><li>first element</li></ol>
<p>other textetxeettx</p>

両方のため<p>及び<ol>要素はブロックとしてレンダリングされます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.