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. Sé que nadie escribirá código como el segundo. Solo quiero saber por qué.
¿Y qué hay de la relación de contención de otras etiquetas?

<p>es un elemento de nivel de bloque, y (se supone que debe usarse) para mostrar texto, no permitirá otros elementos de nivel de bloque dentro de él, sino solo elementos en línea como<span>y<strong>.pes un elemento de nivel de bloque que no tiene nada que ver con eso.divTambién es uno y permite otros bloques.Respuestas:
Un lugar autorizado para buscar 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 "Modelos de contenido HTML".
Para el elemento P, especifica lo siguiente, lo que indica que los elementos P solo pueden contener elementos en línea.
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)".
fuente
%inlinebit anterior. Ver también la respuesta de Oriol.En resumen, es imposible colocar un
<div>elemento dentro de a<p>en el DOM porque la<div>etiqueta de apertura cerrará automáticamente el<p>elemento.fuente
divelemento dentro de unapen el DOM , por ejemplomyP.appendChild(myDiv). Pero un analizador HTML no lo hará.Según HTML5, el modelo de contenido de
divelementos es contenido de flujoEso incluye
pelementos, que solo pueden usarse donde se espera contenido de flujo .Por lo tanto, los
divelementos pueden contenerpelementos.Sin embargo, el modelo de contenido de
pelementos es contenido de fraseoEso no incluye
divelementos, que solo se pueden usar donde se espera contenido de flujo .Por lo tanto, los
pelementos no pueden contenerdivelementos.Dado que la etiqueta final de
pelementos puede omitirse cuando elpelemento es seguido inmediatamente por undivelemento (entre otros), lo siguientese analiza como
Y el último
</p>es un error.fuente
div as inline in CSSno sirve de nada, ya que la nueva estructura analizada es<p>Text</p> <div>some words</div> <p></p>correcta.Después del X HTML, las convenciones han cambiado, y ahora es una mezcla de convenciones de XML y HTML, por eso el segundo enfoque es incorrecto y el validador W3C acepta las cosas correctas que están de acuerdo con los estándares y convenciones.
fuente
Porque la
divetiqueta tiene mayor prioridad que lapetiqueta. Lapetiqueta representa una etiqueta de párrafo, mientras que ladivetiqueta representa una etiqueta de documento.Puede escribir muchos párrafos en una etiqueta de documento, pero no puede escribir un documento en un párrafo. Lo mismo que un archivo DOC.
fuente
<doc>: D