嵌套HTML定义列表(<;dl>;)是否正确?

嵌套HTML定义列表(<;dl>;)是否正确?,html,markup,semantics,Html,Markup,Semantics,嵌套定义列表在语义上是正确的,还是应该只是“名称/值对的平面列表” 似乎没有禁止它 更进一步。当然。嵌套的DLs没有问题。您可以在语义上拥有“子定义”。如果它在所有浏览器中都有效,那么就这样做 我知道这可能会引起争议,很多人可能会告诉你这不是应该使用的方式。网页设计的不成文规则,就像使用列表做任何事情一样,正是人们决定要做的。没有理由使用float(其目的是在文本块中浮动图像)来布局网站上的每个小细节。但如果你试图使用桌子,你显然是泡沫前时代的白痴,你根本不知道如何设计 所以,做你想做的事,不要

嵌套定义列表在语义上是正确的,还是应该只是“名称/值对的平面列表”

似乎没有禁止它


更进一步。

当然。嵌套的
DL
s没有问题。您可以在语义上拥有“子定义”。

如果它在所有浏览器中都有效,那么就这样做

我知道这可能会引起争议,很多人可能会告诉你这不是应该使用的方式。网页设计的不成文规则,就像使用列表做任何事情一样,正是人们决定要做的。没有理由使用float(其目的是在文本块中浮动图像)来布局网站上的每个小细节。但如果你试图使用桌子,你显然是泡沫前时代的白痴,你根本不知道如何设计


所以,做你想做的事,不要为了解决问题而把事情弄得更复杂。

如果只有
包含嵌套列表,那么规范似乎允许这样做。规范规定
是内联元素,因此不能包含嵌套列表。一个
是一个块元素,所以在其中一个元素中有一个内部列表就可以了。

一个有趣的问题


定义列表确实是用来表示键和值的,但它们的多重性不是1,而是1+。如果允许这种复杂性,并且记住dt是内联的,我认为用其他事物的树来表示定义事物没有语义问题。

我通过用无序或有序的列表替换嵌套的定义列表来解决这个问题,例如

<dl>
  <dd>Black hot drink</dd>
  <ul>
    <dd>White cold drink</dd>
    <ol>
      <dd>Red sweet drink</dd>
    </ol>
  </ul>
</dl>

黑热饮
    白冷饮 红糖饮料

比较表设计和浮点使用有点不公平,无论何时从HTML文件中提取数据,实际上都是使用提供的元素来确定数据的含义,而CSS纯粹是一种表示行为,这就是语义web……Firefox 48和IE9将DL作为DL的子级直接嵌套处理得很好。谷歌Chrome将其渲染为错误:没有缩进;所有的东西都被冲走了。如果使用DD标记包装嵌套的DL,则IE或FF呈现该DL的方式不会发生任何变化。在Chrome上,缩进显示,但嵌套列表顶部和封闭列表中的上一项之间有一个丑陋的额外空白垂直空间。但是,react编译器会因无效的dom嵌套而引发错误:
不能显示为
的后代。