HTML первоначально был создан, чтобы поместить содержимое документов в какую-то структуру, понятном для компьютеров. Имея это в виду, тег p
должен содержать все, что было бы структурировано как абзац, если содержимое страницы должно было быть превращено в печатный документ. Элементы div
и span
зарезервированы в качестве контейнеров общего назначения для облегчения формирования и группировки связанных элементов для обеспечения дополнительных уровней структуры, возможно, коррелирующих со страницами в текстовом документе.
В некоторых случаях p
теги должны содержать другие элементы, такие как якорь (a
), изображение (img
) и других элементов в линии, так как они непосредственно связаны с содержанием остальной части пункта и ему имеет смысл группировать их таким образом, или текст остальной части параграфа дает более подробное описание.
Однако, если нет дополнительного описания этих элементов, нет смысла размещать их в абзаце просто как удобный контейнер; a div
было бы более уместным. В общем, абзац должен содержать один абзац текста и любые непосредственно связанные или описанные элементы. Ничто другое не имеет особого смысла в абзаце.
UPDATE: HTML5 также добавляет ряд других смысловых элементов "контейнер", в том числе article
, nav
, header
, section
и aside
.
"и, возможно, списки (' ol' & 'ul'), элементы' no, 'ol' и' ul' недопустимы в 'p'. – zzzzBov
@zzzzBov true, я пропустил эту ошибку в моих праведниках. Я исправил ответ. – cdeszaq