@schmuckk

Вложение тегов html?

Почему если я вкладываю элемент списка или элемент картинка в блок параграфа, в дереве документа эти элементы все равно отражаются как отдельные элементы, а не как дочерние? Так и должно быть и мне просто с этим смириться? Или такие элементы нельзя вкладывать в блок параграфа?
  • Вопрос задан
  • 369 просмотров
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Не все элементы можно вкладывать в какие-то другие элементы.

В частности в тег <p> можно вкладывать только строчные элементы.

Формальное описание что можно вкладывать в тег можно посмотреть в спецификации или MDN.

В частности для <p> там написано «Разрешённое содержимое: фразовый контент».

В случае неправильного вложения браузер пытается починить DOM-дерево как может (на самом деле по определённым правилам которые тоже есть в спецификации) и чаще всего он просто закрывает теги до тех пор пока не получит не доберётся до родителя в котором данный контент разрешён.

UPD: Вопрос на самом деле довольно неочевидный для новичков, так что есть полезный сайт https://caninclude.glitch.me/caninclude?child=ul&p...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Stung
Программист
Элементы должны находиться внутри блока параграфа , тогда обращаясь через сам блок к элементам у вас получится изменять элементы внутри самого блока.
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
Открываешь спецификацию html (или идешь на mdn, удобно через гугл "mdn paragraph").
Смотришь там какой контент можно размещать в <P>
Permitted content Phrasing content.


Смотришь что такое "Phrasing content" и выясняешь, что да, списки нельзя вставлять в абзац, а вот img, picture и даже canvas вполне можно.

Итого: в вопросе ошибка, "картинки" вполне себе вставляются, но да - в html довольно много семантических ограничений, нельзя вставлять что угодно во что угодно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы