我知道在 HTML5 中不允许将 div 嵌套在 li 中,尽管您可以并且它可以工作。这是否意味着我不应该使用它?在 dls 中嵌套 div 的标准是什么?
4 回答
此信息是不正确的 -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
)曾经有相同的限制,即它们只能包含其各自的子元素dt
和dd
,但最近的更改也允许div
子元素,只要这些div
s 本身包含 adt
或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>
作为助记符:容器元素应该只包含它们各自的子元素,这些子元素可以包含您喜欢的任何内容。
完全允许在和元素中嵌套元素。/元素可能包含流内容,哪些元素是。<div>
<li>
<dd>
<li>
<dd>
<div>
规范:http ://www.w3.org/TR/html5/grouping-content.html#the-li-element
因为我和第二个问题有同样的问题:在 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 元素。
我不确定这是否被视为语义,但我喜欢这样做:
<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>