HTML fue creado originalmente para poner el contenido de los documentos en una especie de estructura comprensible para los ordenadores. Teniendo esto en cuenta, se supone que la etiqueta p
contiene todo lo que se estructuraría como un párrafo si el contenido de la página se convirtiera en un documento impreso. Los elementos div
y span
se reservan como contenedores de uso general para facilitar el formateo y la agrupación de elementos relacionados para proporcionar niveles adicionales de estructura, tal vez correlacionando a las páginas en un documento de texto.
En algunos casos, p
etiquetas debe contener otros elementos, como el ancla (a
), imagen (img
) y otros elementos en línea, ya que se relacionan directamente con el contenido del resto del párrafo y tiene sentido agruparlos de esa manera, o el texto del resto del párrafo proporciona una descripción más detallada.
Sin embargo, si no hay una descripción adicional de esos elementos, no tiene sentido colocarlos en un párrafo simplemente como un contenedor conveniente; un div
sería más apropiado. En general, se supone que un párrafo contiene un párrafo de texto y cualquier elemento directamente relacionado o descrito. Nada más tiene mucho sentido en un párrafo.
ACTUALIZACIÓN: HTML5 también añade un número de otros elementos semánticos "contenedor", incluyendo article
, nav
, header
, section
, y aside
.
"y posiblemente las listas (' ol' y 'ul')" no, 'ol' y' ul' no son válidos dentro de los elementos 'p'. – zzzzBov
@zzzzBov cierto, me perdí ese error en mis ediciones. He corregido la respuesta. – cdeszaq