élément ul ne peut jamais être un enfant de l'élément p
Pourquoi nous n'avons jamais ul élément comme l'enfant d'un élément p?
J'ai fait une page web avec le code suivant
<p> some text
<ul>
<li>...</li>
<li>...</li>
.
.
.
</ul>
</p>
ici, l'élément ul est un enfant de l'élément p. Cependant, dans tous les principaux navigateurs(Chrome, Firefox, Internet Explorer)(toutes versions récentes), elle est interprétée comme suit
<p> some text</p>
<ul>
<li>...</li>
<li>...</li>
.
.
.
</ul>
<p></p>
J'ai vérifié par un clic-droit sur l'élément ul(chromé) et en sélectionnant l'inspecter l'élément option. Je l'ai vu dans chrome, mais les 2 autres navigateurs se sont comportés de la même manière(css selecter "p ul" ne fonctionne pas bien).
Pourquoi est-il si? Peut-on dire d'un cas général dans lequel ces changements par le navigateur prend place?
- Double Possible de Dois-ol/ul être à l'intérieur <p> ou à l'extérieur?
Vous devez vous connecter pour publier un commentaire.
Veuillez vérifier les La spécification HTML, qui stipule clairement que le fait de mettre des listes dans un paragraphe élément est interdit, et aussi de vous donner quelques exemples sur ce qui pourrait être fait:
ol
à l'intérieur dep
: i.imgur.com/1uyqtNO.png . En dehors de l'éditeur de code HTML, il a le même problème que l'OP. L'éditeur me donne le code HTML et j'ai à présent à l'extérieur, donc il se casse (car il aol
à l'intérieur dep
). Comment fonctionne l'éditeur de permettre-il lui-même?<textarea> <HTML CODE HERE> </textarea>
) et puis l'éditeur de code js est appelé letextarea
élément. Cela signifie que le navigateur a la 1ère à dire sur le code html dans le textarea et puis de l'éditeur. Donc, si chrome a converti<p><ol>...</ol></p>
à<p></p><ol>...</ol>
puis l'éditeur va voir la dernière valeur et n'ont aucune connaissance de l'ancien. Je pense que quelque chose se passe sous le capot mais je ne le trouve pas.ul/ol
description indiquant quePermitted parents: Any element that accepts flow content.
(developer.mozilla.org/en-US/docs/Web/HTML/Element/ol) La liste des flux d'éléments de contenu contientp
ainsi. Très déroutant.Il a toujours été une règle dans le code HTML qu'un
p
élément peut contenir que du texte et texte-niveau de balisage, pas une liste par exemple. Par conséquent, les navigateurs implique une fermeture</p>
étiquettep
élément est ouverte et une balise de début d'un élément de niveau bloc, comme<ul>
, est rencontré. Dans votre exemple, le</p>
tag après</ul>
est sans-abri et normalement ignorés.<p>
peut avoir que des éléments inline comme childs et aucun des éléments de bloc (voir e.g, à MDN).<ul>
sur l'autre main est un élément de niveau bloc (MDN)!La raison pour laquelle le navigateur d'interpréter votre code comme vous l'avez vu, réside dans le HTML5 analyse spec. La spécification des listes un exemple très semblable à la vôtre: whatwg lien.
Un autre intéressants liés à la question pourrait être: HTML: Inclure ou exclure, en option balises de fermeture?