Подтвердить что ты не робот

Вложенность <p>не будет работать, если вложенность <div> будет?

Я обычно не буду влагать <p> следующим образом:

<p>The following:
    <p>one</p>
    <p>two</p>
</p>

и я буду использовать это вместо <div>. Но сегодня я использовал <p>, но кажется, что оба Emacs и Google Chrome будут считать внешний <p> закрытым, как только он увидит новый <p>. (DOCTYPE - это HTML 4.01 Strict).

Я думал, что <p> - это не более чем <div>, но только с некоторым заранее определенным полем и дополнением, но верно ли, что <p> не может быть вложенным? Если да, то какое правило говорит, что оно не может?

4b9b3361

Ответ 1

Потому что абзац - это абзац.. и что как определяется HTML (а HTML - не XML).

Любой <p> (или другой элемент уровня блока) неявно закрывает любой открытый <p>.

Per 9.3.1 Пункты: элемент P спецификации HTML 4.01:

Элемент P представляет собой абзац. Он не может содержать элементы уровня блока (включая сам P).


Обратите внимание, что так анализируется HTML и что даже <div> неявно закрывает абзац!

Однако <span> с display:block; не закрыл бы <p>, поскольку <span> не является элементом уровня блока.

То есть, CSS неактуальен на данном этапе обработки HTML, и CSS не имеет отношения к DOM/parser при определении того, является ли элемент элементом уровня блока или нет. Рассмотрим случай, когда CSS применяется динамически или через еще не загруженную таблицу стилей: прикладной CSS не изменяет DOM.


В то время как спецификация HTML5 (рабочий-проект) не включает язык выше в спецификации HTML4, он продолжает определять абзац как контейнер для phasing content и далее содержит раздел в параграфах.

Принятый ответ Список элементов HTML5, которые могут быть вложены внутри элемента P? говорит, что элементы <p> не могут встраиваться в HTML5. Ключевая фраза из документации: "Запускает текст фразы [который не включает элементы <p>]". Кроме того, HTML5, пытающийся быть обратно совместимым во многих аспектах, имеет обоснование "Ограничения по моделям контента и значениям атрибутов" :

Некоторые элементы анализируются несколько эксцентричными способами (как правило, по историческим причинам), а ограничения их модели содержимого предназначены для того, чтобы не подвергать автора этим проблемам.

Это поведение ссылается на запись Wiki в HTML5 в поточном содержимом:

Ограничения HTML5 на вложение элементов p и на то, что могут содержать элементы p, связаны с цитатой: "особенности парсера", которые заставляют p автоматически закрываться.

Ответ 2

Из раздела HTML 4.01 раздел 9.3.1

Элемент P представляет собой абзац. Он не может содержать элементы уровня блока (включая сам P).