Синтаксически, div
внутри p
недопустимо во всех стандартах HTML.Более того, при использовании соответствующего анализатора HTML невозможно разместить элемент <div>
внутри <p>
в DOM, поскольку открывающий тег <div>
автоматически закроет элемент <p>
.
Семантически правильный выбор зависит от содержимого, которое вы размечаете.Вам нужно будет показать хотя бы пример полного абзаца и, возможно, содержание, окружающее его, чтобы быть уверенным в предоставлении достаточной информации для определения правильной семантической разметки.
Однако, учитывая, что оба <div>
<span>
не содержит семантики, и этот CSS никоим образом не может изменить это, если вы уверены, что содержимое тега <p>
действительно образует абзац, и что <span style="display: block">
дает вам эффект представления, который вы ищете, тогда это действительный HTML и будет вполне подходящим решением.