<p>
элементы не допускают элементов уровня блока внутри них, поэтому <div class="fieldError>
находится снаружи <p class='foo'>
.
Я не уверен, почему у вас есть дополнительный тег p
нижепервый.Можно ли опубликовать сгенерированный HTML, когда вы просто используете чистый HTML?
Быстрый эксперимент показывает, что вложенные блочные элементы таинственным образом генерируют еще один тег <p>
в FF6, Chrome 13 и Opera 11.51
Это набранный код:
<p>
P
<div>
DIV1
<div>
DIV1a
</div>
</div>
</p>
И это вывод:
<p>P</p>
<div>
DIV1
<div>
DIV1a
</div>
</div>
<p></p>
Похоже, что каждый элемент уровня блока (здесь <div>
) выталкивается из любого<p>
и создает еще один тег <p>
под ним.
Начиная с спецификации :
Элемент P представляет абзац.Он не может содержать элементы уровня блока (включая сам P).