Html 定义列表与标题无序列表-哪个更有语义意义?

Html 定义列表与标题无序列表-哪个更有语义意义?,html,accessibility,semantic-markup,Html,Accessibility,Semantic Markup,比如说你有一个电视节目列表,你有一个节目标题和一个节目描述。您希望该列表也可供残疾人访问 使用定义列表是否更有意义: <dl> <dt>...title...</dt><dd>...description...</dd> ... </dl> …标题…描述。。。 ... 还是有标题的无序列表 <ul> <li><h3>...title...</h3>

比如说你有一个电视节目列表,你有一个节目标题和一个节目描述。您希望该列表也可供残疾人访问

使用定义列表是否更有意义:

<dl>
    <dt>...title...</dt><dd>...description...</dd>
    ...
</dl>

…标题…描述。。。
...
还是有标题的无序列表

<ul>
    <li><h3>...title...</h3><p>...description...</p></li>
    ...
</ul>
  • …标题……说明

  • ...

哪个更具语义,对屏幕阅读器的响应更好?(知道两者的样式可以相同)

我更喜欢前者。首先,仅仅从内容上看,它对我来说似乎更有意义

但那是我。我认为标记应该反映文档结构,既然(正如您所说)CSS可以以任何方式设置样式,为什么不让标记反映内容呢?在我看来,一个包含标题标题和描述的项目的列表似乎有点过分了


但是,嘿。你知道他们对意见的看法。

在这种情况下,使用定义列表更有意义。除此之外,是否真的有必要使用列表?在页面上适当地使用标题标记(x=2-6)并在标题下应用所有内容可能更有意义。电视节目在特定情况下,使用“列表”来显示定义或其他内容可能没有意义。同样,它们也可以被样式化,所以我只担心使用这个的语义

希望这有帮助
Zach

如果您使用的是HTML4.01,则不应使用,因为它被定义为“定义列表”(并且您的示例不包含术语及其定义)。如果您使用的是HTML5,则可以使用
dl
,因为定义已更改

li
中使用标题可能会给文档大纲带来一些问题。标题的范围将包括下一个
li
  • 标题说明
  • 。通过使用
    部分
    (分别为
    文章
    ),这是可以避免的

    因此,对于HTML5,我认为以下方法是可能的:

    dl
    我不太喜欢那样。这个列表在这里添加的不多,为什么不省略它呢?(见下一个示例)

    仅标题
    您完全忽略了第二点:可访问性和屏幕阅读器。“第二点”根本没有反映在标题中,这是一个单独的问题,而且非常模糊。屏幕阅读器通常有一个特殊的标题缓冲区,允许用户只扫描标题,不确定它们是否适用于
    dt
    。我不建议使用
    ul
    +
    h1
    ,W3C也是如此:注意:虽然它符合在li元素中包含标题元素的要求,但它可能无法传达作者想要的语义。标题会开始一个新的部分,所以列表中的标题会隐式地将列表分割成多个部分。@Ryan:是的,我就是这么想的。但是,如果您明确使用
    部分
    ,我想这应该不再是问题了。从我所能看出,
    部分
    在文档中创建自己的世界或气泡。另一方面,
    ul
    /
    ol
    传达出这些家伙(
    li
    )团结在一起,所以你有一个矛盾。
    <dl>
    
      <dt>Title1</dt>
      <dd>Description1</dd>
    
      <dt>Title2</dt>
      <dd>Description2</dd>
    
    </dl>
    
    <ul>
    
      <li>
        <section>
          <h1>Title1</h1>
          <p>Description1</p>
        </section>
      </li>
    
      <li>
        <section>
          <h1>Title2</h1>
          <p>Description2</p>
        </section>
      </li>
    
    </ul>
    
    <section>
      <h1>Title1</h1>
      <p>Description1</p>
    </section>
    
    <section>
      <h1>Title2</h1>
      <p>Description2</p>
    </section>
    
    <section>
      <h1>Title1</h1>
      <dl>
        <dt>Description</dt>
        <dd>…</dd>
        <dt>Rating</dt>
        <dd>…</dd>
        <dt>Time</dt>
        <dd>…</dd>
        <dt>Length</dt>
        <dd>…</dd>
      </dl>
    </section>