【问题标题】:UL for Semantic Lists and Headings用于语义列表和标题的 UL
【发布时间】:2012-01-18 13:14:37
【问题描述】:

我通常使用ul 来列出项目

<ul class="users">
  <li class="user">
    <div class="name">Jack</div>
    <div class="gender">M</div>
    <div class="salary">$15k</div>
    <div class="rank">Burger Flipper</div>
  </li>
  <li class="user">
    <div class="name">Jill</div>
    <div class="gender">F</div>
    <div class="salary">$17k</div>
    <div class="rank">Fry Tosser</div>
  </li>
</ul>

为该列表创建标题时,是否最好将标题作为列表的一部分包含在内

  <li class="user head">
    <div class="human-attributes">This is:</div>
    <div class="job-attributes">They are:</div>
  </li>

或者应该是一个单独的列表?

<ul class="users head">
  <li class="user">
    <div class="human-attributes">This is:</div>
    <div class="job-attributes">They are:</div>
  </li>
</ul>

【问题讨论】:

  • 任何一个都不是语义的。这看起来像表格数据 - 为什么不使用带有 thead 的表格?
  • 我的例子很差,但我的问题仍然是关于列表的;这些答案给了我所需的洞察力。
  • 我更新了我的示例,使其不那么模棱两可。

标签: html semantics html-lists


【解决方案1】:

取决于你想用它做什么......你真的应该使用:

<table><thead></thead><tbody></tbody></table> 

用于您描述的内容的构造,而不是

  • 嵌入一个
    ,默认情况下会以奇怪的方式呈现。

    然后您可以使用 CSS 来控制行为。

  • 【讨论】:

    • 我认为我的例子很糟糕。想象一下,当您转到 stackoverflow.com 时的问题列表
    • @JoshJohnson 即使数据是包含多列的表格,您也应该使用表格。如果您正在考虑显示复杂的不相关信息列表,那么您可以在 中使用 。在
    • 元素中使用 div 有点像在

      元素中使用 div。

  • 谢谢。我仍然对&lt;li&gt; 内部的&lt;div&gt;s 感到不安,因为&lt;li&gt; 是一个块元素,甚至可能需要标记一个项目列表。就我而言,数据在语义上是一个列表,但业务需要“标题外观”,因此我进退两难。理想情况下,不会有标题或标签:&lt;div class="name"&gt;&lt;span&gt;Name:&lt;/span&gt; &lt;span&gt;Jack&lt;/span&gt;&lt;/div&gt;,甚至可能是&lt;label&gt;,因为这可能会成为复选框的可选列表。
  • @JoshJohnson 啊 ...如果是这样,那么我会说从复杂的表语义中获取提示,并将标题作为容器类中的一个单独实体实现,例如
    • 废话
    • 废话
    将从定位、相对定位、可管理性方面为您提供最灵活的结构
  • 是的,情况很奇怪。我采用了一种混合方法,并使用嵌套 div 而不是 &lt;ul&gt; 作为“标题”。我使用了相同的类,因此它们的样式相同,加上粗体/边框作为.head 类。 “数据”本身接收到 .data 类,以帮助设置奇数行的样式、悬停等。
  • 【解决方案2】:

    这是 HTML 中表格的合法用途之一。您不应该在语义上使用无序列表来呈现“表格”数据(这就是您所描述的)。你应该使用这样的东西:

    <table>
      <thead>
        <tr>
          <th>Name</th>
          <th>Gender</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>Jack</td>
          <td>M</td>
        </tr>
        <tr>
          <td>Jill</td>
          <td>F</td>
        </tr>
      </tbody>
    </table>
    

    【讨论】:

      【解决方案3】:

      http://www.w3.org/MarkUp/html3/listheader.html 是一个工作草案。 目前,您的解决方案似乎是最好的。但也许是不同的班级。

      【讨论】:

      • HTML 3 规范不是您应该链接的内容。
      • Html3 已过时,但这个问题的重点正是工作草案。综上所述,没有比实际解决方案更好的解决方案了。
      猜你喜欢
      相关资源
      最近更新 更多
      热门标签