18

我知道在 HTML5 中不允许将 div 嵌套在 li 中,尽管您可以并且它可以工作。这是否意味着我不应该使用它?在 dls 中嵌套 div 的标准是什么?

4

4 回答 4

39

此信息是不正确的 -div元素被视为flow content并且非常允许在li元素内部。您可能将它与ul/ol元素混淆了,它可能只包含li相应的 s。

HTML5 的变化在于,它不再具有块级和内联元素。取而代之的是将元素更复杂地分为几类。

要查看根据 HTML5 在元素内允许的内容,请参阅特定标签的描述,其中“内容模型”部分告诉您在此特定元素内允许哪些内容。

编辑:解决关于列表元素的评论中的混淆

(根据2019-07-30的HTML生活标准)

有几种类型的列表 - 最常见的是无序 ( ul)有序 ( ol)列表。ul并且ol是仅将列表项 ( li)作为子元素保存的“容器”元素 - 不允许其他元素*。li元素本身可以包含任意流内容
*(从技术上讲,它们也可以包含“脚本支持”元素

<ol>
   <li></li>
   ...more li elements
</ol>

<ul>
   <li></li>
   ...more li elements
</ul>

对于描述列表 ( dl)曾经有相同的限制,即它们只能包含其各自的子元素dtdd,但最近的更改也允许div子元素,只要这些divs 本身包含 adtdd

<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>

作为助记符:容器元素应该只包含它们各自的子元素,这些子元素可以包含您喜欢的任何内容。

于 2013-08-16T08:35:53.060 回答
10

完全允许在和元素嵌套元素。/元素可能包含流内容,哪些元素是。<div><li><dd><li><dd><div>

规范:http ://www.w3.org/TR/html5/grouping-content.html#the-li-element

于 2013-08-16T08:26:54.840 回答
0

因为我和第二个问题有同样的问题:在 dls 中嵌套 div 的标准是什么?我会在这里回答:

根据 HTML5 ( https://html.spec.whatwg.org/multipage/grouping-content.html#the-dl-element ),

“dl 元素表示由零个或多个名称-值组(描述列表)组成的关联列表。名称-值组由一个或多个名称(dt 元素,可能作为 div 元素子元素的子元素)后跟一个或多个值(dd 元素,可能作为 div 元素子元素的子元素),忽略除 dt 和 dd 元素子元素之外的任何节点,以及作为 div 元素子元素的子元素的 dt 和 dd 元素。在单个 dl 元素中,不应该有每个名称有多个 dt 元素。”

甚至还有一个在 dl 中嵌套 div 的示例,它包装了 dt 和 dd 元素。

于 2019-07-29T15:42:41.453 回答
-1

我不确定这是否被视为语义,但我喜欢这样做:

<dl>
    <li>
        <dt>My Key</dt><dd>My Value</dd>
    </li>
    <li>
        <dt>My Key</dt><dd>My Value</dd>
    </li>
    <li>
        <dt>My Key</dt><dd>My Value</dd>
    </li>
</dl>
于 2021-07-12T23:14:50.587 回答