351 votes

Est-ce que ol/ul doit être à l'intérieur de <p>ou à l'extérieur ?

Lequel des deux est conforme à la norme ?

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

OU

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

40 votes

@oded : le contexte importe-t-il ?

0 votes

En fait, j'ai cherché sur Google "p à l'intérieur d'un élément de liste", pour tous les autres, c'est valable : stackoverflow.com/q/7660575/1066234

0 votes

Allez-y : validateur.w3.org téléchargez votre fichier html, et il vous dira ce qui est valide et ce qui ne l'est pas.

494voto

Sidnicious Points 15187

La réponse courte est que ol les éléments ne sont pas légalement autorisés à l'intérieur p éléments.

Pour savoir pourquoi, voyons aller à la spécification ! Si vous pouvez vous familiariser avec la spécification HTML, elle répondra à bon nombre de vos questions et curiosités. Vous voulez savoir si un ol peut vivre à l'intérieur d'un p . Alors

4.5.1 Le p élément :

Catégories : Contenu du flux , Un contenu palpable .
Modèle de contenu : Formulation du contenu .


4.5.5 Le ol élément :

Catégories : Contenu du flux .
Modèle de contenu : Zéro ou plus li y script-supporting éléments.

La première partie dit que p ne peuvent contenir que des éléments la formulation du contenu (qui sont des éléments "en ligne" comme span y strong ).

La deuxième partie dit ol sont contenu du flux (les éléments de type "bloc" comme p y div ). Ainsi, ils ne peut pas être utilisé à l'intérieur d'un p .


ol et autres flow content peut être utilisé dans d'autres éléments comme div :

4.5.13 Le div élément :

Catégories : Contenu du flux , Un contenu palpable .
Modèle de contenu : Contenu du flux .

12 votes

@link : Oui, w3.org est un peu trop technique. Mais il n'y a aucun doute sur ce qui est correct quand et si vous les avez compris.

5 votes

Je pense que @Sid expliquant la spécification et certains de ses termes est vraiment utile. S'il allait un peu plus loin, ce serait une excellente réponse. Il pourrait aussi répondre explicitement à la question :). J'ai ajouté une modification pour cela.

1 votes

Affreux à lire ? ne le pensez pas, allez à 4.4.1 The p element l'auteur parle même de fantastic sentences ou quelque chose comme ça

53voto

Quentin Points 325526

Le deuxième. Le premier n'est pas valable.

  • Un paragraphe ne peut pas contenir de liste.
  • Une liste ne peut pas contenir de paragraphe, sauf si ce paragraphe est entièrement contenu dans un seul élément de liste.

Un navigateur le traitera comme suit :

<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 -->

14voto

jvelez Points 641

Allez-y http://validator.w3.org/ Téléchargez votre fichier html et il vous dira ce qui est valide et ce qui ne l'est pas.

1 votes

Euh, leur réponse en retour n'est pas claire du tout ! :-/ ...Juste quelque chose comme "closing p" inattendu vu. Rien sur l'identification de la cause première, l'analyse DOM, et "UL ne peut pas être dans P". Triste.

9voto

Kris Ivanov Points 5350

En fait, vous ne devez mettre des éléments en ligne qu'à l'intérieur de la balise p donc dans votre cas ol est mieux à l'extérieur

2 votes

C'est la même réponse que celle de @David Dorward, que vous n'avez pas aimée.

4voto

David Points 343
<p>tetxetextex</p>
<ol><li>first element</li></ol>
<p>other textetxeettx</p>

Parce que les deux <p> y <ol> sont des éléments rendus sous forme de bloc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X