Ответ 1
Эта информация неверна - элементы div
считаются flow content
и очень хорошо допускаются внутри элементов li
. Возможно, вы спутали его с элементами ul
/ol
, которые могут содержать только li
соответственно.
Что изменилось в HTML5, так это то, что он больше не имеет блочных и встроенных элементов. Вместо этого существует более сложное разграничение элементов на несколько категорий.
Чтобы узнать, что разрешено внутри элемента в соответствии с HTML5, см. описание конкретного тега, где раздел "Модель содержимого" сообщает, какой контент разрешен внутри этого конкретного элемента.
ОБНОВЛЕНИЕ: устранение путаницы в комментариях об элементах списка
(согласно стандарту HTML на 2019-07-30)
Существует несколько типов списков - наиболее распространенными являются неупорядоченные (ul
) и упорядоченные (ol
) списки. ul
и ol
являются элементами-контейнерами, которые содержат только элемент списка (li
) как дочерние элементы - никакие другие элементы не допускаются *. Сам элемент li
может содержать произвольный поток содержимого.
* (технически им также разрешено содержать "поддерживающие сценарии" элементы
<ol>
<li></li>
...more li elements
</ol>
<ul>
<li></li>
...more li elements
</ul>
Для списков описания (dl
) раньше было то же ограничение, что они могут содержать только свои соответствующие дочерние элементы dt
и dd
, но недавние изменения разрешают дочерние элементы div
также , если эти div
сами содержат dt
или dd
.
<dl>
<dt>term</dt><dd>description</dd>
</dl>
// the following is now valid as well:
<dl>
<div><dt>term</dt><dd>description</dd></div>
</dl>
Как мнемоника: элементы-контейнеры должны содержать только свои соответствующие дочерние элементы, и эти дочерние элементы могут содержать любой контент, который вам нравится.