提问人:Ricket 提问时间:5/5/2011 最后编辑:Matthias BraunRicket 更新时间:9/9/2023 访问量:465695
制作HTML嵌套列表的正确方法?
Proper way to make HTML nested list?
问:
W3 文档有一个以 为前缀的嵌套列表示例,但他们从未使用未弃用的示例对其进行更正,也没有确切解释该示例的问题所在。DEPRECATED EXAMPLE:
那么,以下哪种方式是编写 HTML 列表的正确方法呢?
选项 1:嵌套是父项的子项:<ul>
<ul>
<ul>
<li>List item one</li>
<li>List item two with subitems:</li>
<ul>
<li>Subitem 1</li>
<li>Subitem 2</li>
</ul>
<li>Final list item</li>
</ul>
选项 2:嵌套是它所属的子项:<ul>
<li>
<ul>
<li>List item one</li>
<li>List item two with subitems:
<ul>
<li>Subitem 1</li>
<li>Subitem 2</li>
</ul>
</li>
<li>Final list item</li>
</ul>
答:
选项 2 是正确的。
嵌套列表应位于嵌套列表的 <li>
元素内。
链接到 MDN 关于列表的文章(摘自下面的评论):HTML 列表。
链接到 HTML5 W3C 规范:HTML5 ul
。ul
请注意,一个元素可能正好包含零个或多个元素。这同样适用于 HTML5 ol
。ul
li
描述列表 (HTML5 dl
) 类似,但同时允许 和 元素。dt
dd
更多注意事项:
dl
= 定义列表。ol
= 有序列表(数字)。ul
= 无序列表(项目符号)。
嵌套列表中的 MDN 链接。
评论
选项 2
<ul>
<li>Choice A</li>
<li>Choice B
<ul>
<li>Sub 1</li>
<li>Sub 2</li>
</ul>
</li>
</ul>
我更喜欢选项二,因为它清楚地将列表项显示为该嵌套列表的拥有者。我总是倾向于语义上合理的 HTML。
如果验证,则选项 1 在 html 5 中显示为错误,因此选项 2 是正确的。
你有没有想过使用TAG“dt”而不是“ul”来嵌套列表?它的继承样式和结构允许您在每个部分都有一个标题,并自动将里面的内容制成表格。
<dl>
<dt>Coffee</dt>
<dd>Black hot drink</dd>
<dt>Milk</dt>
<dd>White cold drink</dd>
</dl>
与
<ul>
<li>Choice A</li>
<li>Choice B
<ul>
<li>Sub 1</li>
<li>Sub 2</li>
</ul>
</li>
</ul>
评论
dt
dd
dl
选项 2 是正确的:嵌套的 <ul>
是它所属的 <li>
的子项。
如果验证,选项 1 会在 html 5 中显示为错误 -- credit: user3272456
正确:作为<ul>
<li>
制作 HTML 嵌套列表的正确方法是将嵌套列表作为其所属的子列表。嵌套列表应位于嵌套它的列表元素内。<ul>
<li>
<li>
<ul>
<li>Parent/Item
<ul>
<li>Child/Subitem
</li>
</ul>
</li>
</ul>
嵌套列表的 W3C 标准
一个列表项可以包含另一个完整的列表,这称为“嵌套”列表。它对于目录之类的东西很有用,例如本文开头的目录:
- 第一章
- 第一节
- 第二节
- 第三节
- 第二章
- 第三章
嵌套列表的关键是记住嵌套列表应与一个特定的列表项相关。为了在代码中反映这一点,嵌套列表包含在该列表项中。上面列表的代码如下所示:
<ol>
<li>Chapter One
<ol>
<li>Section One</li>
<li>Section Two </li>
<li>Section Three </li>
</ol>
</li>
<li>Chapter Two</li>
<li>Chapter Three </li>
</ol>
请注意嵌套列表是如何在包含列表项的 和 文本之后开始的(“第一章”);然后在包含列表项之前结束。嵌套列表通常构成网站导航菜单的基础,因为它们是定义网站层次结构的好方法。<li>
</li>
从理论上讲,您可以根据需要嵌套任意数量的列表,尽管在实践中,嵌套列表太深可能会令人困惑。对于非常大的列表,您最好将内容拆分为几个带有标题的列表,甚至将其拆分为单独的页面。
这里没有提到的是,选项 1 允许您任意深度嵌套列表。
如果您控制内容/css,这应该无关紧要,但如果您正在制作富文本编辑器,它会派上用场。
例如,gmail、收件箱和 evernote 都允许创建如下列表:
使用选项 2 时,您无法这样做(您将拥有一个额外的列表项),使用选项 1,您可以这样做。
评论