Pour autant que je sache, c'est vrai:
<div>
<p>some words</p>
</div>
Mais c'est faux:
<p>
<div>some words</div>
</p>
Le premier peut passer le validateur W3C (XHTML 1.0), mais le second non. Je sais que personne n'écrira de code comme le second. Je veux juste savoir pourquoi.
Et qu'en est-il de la relation de confinement des autres balises?
<p>
s'agit d'un élément de niveau bloc et qu'il est (censé être) utilisé pour afficher du texte, il n'autorisera pas d'autres éléments de niveau bloc à l'intérieur, mais uniquement ceux en ligne comme<span>
et<strong>
.p
un élément de niveau bloc qui n'a rien à voir avec cela.div
est également un et permet d'autres blocs.Réponses:
La spécification HTML est un endroit faisant autorité pour rechercher les relations de confinement autorisées. Voir, par exemple, http://www.w3.org/TR/html4/sgml/dtd.html . Il spécifie quels éléments sont des éléments de bloc et lesquels sont en ligne. Pour ces listes, recherchez la section intitulée "Modèles de contenu HTML".
Pour l'élément P, il spécifie ce qui suit, ce qui indique que les éléments P ne peuvent contenir que des éléments en ligne.
Ceci est cohérent avec http://www.w3.org/TR/html401/struct/text.html#h-9.3.1 , qui dit que l'élément P "ne peut pas contenir d'éléments de niveau bloc (y compris P lui-même)".
la source
%inline
bit ci-dessus. Voir aussi la réponse d'Oriol.Bref, il est impossible de placer un
<div>
élément à l'intérieur d'un<p>
dans le DOM car la<div>
balise d' ouverture fermera automatiquement l'<p>
élément.la source
div
élément à l'intérieur d'unp
dans le DOM , par exemplemyP.appendChild(myDiv)
. Mais un analyseur HTML ne le fera pas.Selon HTML5, le modèle de contenu des
div
éléments est un contenu de fluxCela inclut des
p
éléments, qui ne peuvent être utilisés que là où le contenu du flux est attendu.Par conséquent, les
div
éléments peuvent contenir desp
éléments.Cependant, le modèle de contenu des
p
éléments est le Phrasing contentCela n'inclut pas les
div
éléments, qui ne peuvent être utilisés que là où le contenu du flux est attendu.Par conséquent, les
p
éléments ne peuvent pas contenir d'div
éléments.Étant donné que la balise de fin des
p
éléments peut être omise lorsque l'p
élément est immédiatement suivi d'undiv
élément (entre autres), ce qui suitest analysé comme
et le dernier
</p>
est une erreur.la source
div as inline in CSS
ne sert à rien, comme la nouvelle structure analysée est<p>Text</p> <div>some words</div> <p></p>
-elle correcte?Après le X HTML, les conventions ont été modifiées, et maintenant c'est un mélange de conventions de XML et de HTML, c'est pourquoi la deuxième approche est fausse et le validateur W3C accepte les choses correctes qui sont conformes aux normes et conventions.
la source
Parce que la
div
balise a une priorité plus élevée que lap
balise. Lap
balise représente une balise de paragraphe tandis que ladiv
balise représente une balise de document.Vous pouvez écrire de nombreux paragraphes dans une balise de document, mais vous ne pouvez pas écrire un document dans un paragraphe. Identique à un fichier DOC.
la source
<doc>
: D