html - significado - etiqueta span
¿Por qué la etiqueta<p> no puede contener la etiqueta<div> dentro de ella? (5)
Hasta donde yo sé, esto es correcto:
<div>
<p>some words</p>
</div>
Pero esto está mal:
<p>
<div>some words</div>
</p>
El primero puede pasar el validador w3c (xhtml 1.0), pero el segundo no puede. Sé que nadie escribirá código como el segundo. Solo quiero saber por qué. ¿Y qué pasa con la relación de contención de otras etiquetas?
Después del X HTML, las convenciones se han cambiado, no es una mezcla de convenciones de XML y HTML, por eso el segundo enfoque es incorrecto y el validador de w3c acepta las cosas correctas que están de acuerdo con los estándares y convenciones.
En resumen, es imposible colocar un elemento <div>
dentro de un <p>
en el DOM porque la etiqueta de apertura <div>
cerrará automáticamente el elemento <p>
.
Según HTML5, el modelo de contenido de los elementos div
es contenido de flujo
La mayoría de los elementos que se utilizan en el cuerpo de documentos y aplicaciones se clasifican como contenido de flujo.
Eso incluye elementos p
, que solo se pueden usar cuando se espera contenido de flujo .
Por lo tanto, los elementos div
pueden contener elementos p
.
Sin embargo, el modelo de contenido de elementos p
es el contenido de Phrasing
El contenido de la redacción es el texto del documento, así como los elementos que marcan ese texto a nivel de intrapárrafo. Ejecuciones de contenido de frase de paragraphs .
Eso no incluye elementos div
, que solo se pueden usar cuando se espera contenido de flujo .
Por lo tanto, los elementos p
no pueden contener elementos div
.
Como la etiqueta final de p
elementos se puede omitir cuando el elemento p
es seguido inmediatamente por un elemento div
(entre otros), la siguiente
<p>
<div>some words</div>
</p>
es analizado como
<p></p>
<div>some words</div>
</p>
y el último </p>
es un error.
Un lugar autorizado para buscar las relaciones de contención permitidas es la especificación HTML. Ver, por ejemplo, http://www.w3.org/TR/html4/sgml/dtd.html . Especifica qué elementos son elementos de bloque y cuáles están en línea. Para esas listas, busque la sección marcada como "Modelos de contenido HTML".
Para el elemento P, especifica lo siguiente, que indica que los elementos P solo pueden contener elementos en línea.
<!ELEMENT P - O (%inline;)* -- paragraph -->
Esto es coherente con http://www.w3.org/TR/html401/struct/text.html#h-9.3.1 , que dice que el elemento P "no puede contener elementos de nivel de bloque (incluido el propio P)".
porque la etiqueta div tiene mayor prioridad que la etiqueta p. La etiqueta p representa la etiqueta del párrafo si la etiqueta div representa la etiqueta del documento. puede escribir muchos párrafos en una etiqueta de documento pero no puede escribir un documento en un párrafo. Igual que un archivo DOC.