Стандарты HTML5 вложенности div в li или dl

Я знаю, что не разрешено встраивать div в li в HTML5, хотя вы можете и это работает. Означает ли это, что я не использую его? Каков стандарт о вложенности div в dls?

Ответ 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>

Как мнемоника: элементы-контейнеры должны содержать только свои соответствующие дочерние элементы, и эти дочерние элементы могут содержать любой контент, который вам нравится.

Ответ 2

Абсолютно разрешено вставлять элементы <div> в элементы <li> и <dd>. Элементы <li>/<dd> могут содержать содержимое потока, элементы <div>.

Спецификация: http://www.w3.org/TR/html5/grouping-content.html#the-li-element

Ответ 3

Так как у меня был тот же вопрос, что и во втором вопросе: каков стандарт вложенности div в dls? Я отвечу здесь:

Согласно HTML5 (https://html.spec.whatwg.org/multipage/grouping-content.html#the-dl-element),

"Элемент dl представляет список ассоциаций, состоящий из нуля или более групп" имя-значение "(список описания). Группа" имя-значение "состоит из одного или нескольких имен (элементы dt, возможно, как дочерние элементы дочернего элемента div), за которыми следует один или более значений (элементы dd, возможно, как дочерние элементы дочернего элемента div), игнорируя любые узлы, кроме дочерних элементов dt и dd, и элементы dt и dd, являющиеся дочерними элементами дочерних элементов div. Внутри одного элемента dl не должно быть быть более чем одним элементом dt для каждого имени. "

Есть даже пример вложенности div внутри dl, который оборачивает элементы dt и dd.