163 votes

Pourquoi <p> l'étiquette ne peut pas contenir <div> tag à l'intérieur?

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 ne le peut pas. Je sais que personne n’écrira du code comme le second. Je veux juste savoir pourquoi. Et qu'en est-il de la relation de confinement des autres balises?

195voto

Colin Campbell Points 754

Une autorité endroit à regarder pour les permis de confinement des relations est la spécification HTML. Voir, par exemple, http://www.w3.org/TR/html4/sgml/dtd.html. Il spécifie les éléments sont les éléments de bloc et qui sont en ligne. Pour ces listes, recherche pour la section marquée "HTML des modèles de contenu".

Pour l'élément P, il spécifie la suivante, ce qui indique que les éléments P ne sont autorisés à contenir des éléments inline.

<!ELEMENT P - O (%inline;)*            -- paragraph -->

Ceci est cohérent avec http://www.w3.org/TR/html401/struct/text.html#h-9.3.1qui dit que l'élément P "ne peut pas contenir les éléments de niveau bloc (y compris P lui-même)."

69voto

defau1t Points 7014

En bref, il est impossible de placer un élément <div> dans un <p> dans le DOM car la balise d'ouverture <div> fermera automatiquement le <p> élément.

-1voto

geekdev786 Points 9

Après le X HTML, les conventions n’ont pas été modifiées, ce n’est pas un mélange de conventions XML et HTML. C’est pourquoi la deuxième approche est fausse et le validateur w3c accepte les éléments corrects qui sont conformes aux normes et conventions.

-7voto

Gaurav Agrawal Points 2552

parce que la balise div a une priorité plus élevée que la balise p. La balise p indique pour une balise de paragraphe si la balise div représente la balise de document. vous pouvez écrire plusieurs paragraphes dans une balise de document, mais vous ne pouvez pas écrire un document dans un paragraphe. Même un fichier DOC.

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