4

这是我已经思考了一段时间的事情,因为我已经看到两者都在实践中使用。

方法一

<ol>
    <li>List item 1</li>
    <li>List item 2
        <ol>
            <li>List item 3</li>
        </ol>
    </li>
    <li>List item 4</li>
</ol>

这在我看来在语义上是正确的,因为子列表是该列表项的子列表,但是它不是很干净(列表项内容<list right next to it>)。

方法二

<ol>
    <li>List item 1</li>
    <li>List item 2</li>
        <ol>
            <li>List item 3</li>
        </ol>
    <li>List item 4</li>
</ol>

更清晰,但不能直接理解该列表是第 2 项的子列表(尽管人类推断可以理解)。

顺便说一句,这纯粹是对语义标记的关注,两种方法在页面上呈现相同的内容。

所以,你怎么看?可能的来源是可取的,但个人使用也很好。我注意到 MediaWiki 的 heirachial TOC 正在使用方法 1,这鼓励我相信这是正确的用法。

4

3 回答 3

13

方法 2 不是有效的 HTML。OL不允许作为另一个元素的直接子OL元素。仅LI允许在OL.

此外,由于缩进,子列表对第 2 项的成员资格仅对人类读者是显而易见的。即使使用 s 也要缩进LI,看起来内部列表本身就是第三项。我可能会期待这样的渲染,有两个数字:

1. 清单项目 1
2. 列出第 2 项
3. 1. 列出项目 3
4. 列出第 4 项

方法1是要走的路。

于 2008-12-21T00:07:15.687 回答
2

方法1是正确的。

于 2008-12-20T23:57:34.693 回答
2

HTML 4.01仅允许 OL 中的 LI 项。然而,LI 的结束标签是可选的。这意味着这相当于您的方法1:

<ol>
   <li>List item 1
   <li>List item 2
      <ol>
        <li>List item 3
      </ol>
   <li>List item 4
</ol>

对于读者来说,结束 LI 的位置有点模棱两可——尽管规范很清楚它会结束 OL 之后。

XHTML 1.1具有相同的限制,但强制使用关闭 LI 使其明确。

于 2008-12-21T00:12:22.637 回答