【问题标题】:Layout a HTML list in evenly-spaced columns在等间距的列中布局 HTML 列表
【发布时间】:2010-10-08 04:45:45
【问题描述】:

我想在 2/3 等间距的列中布置如下列表

<ul>
  <li>one<li>
  <li>two<li>
  <li>three<li>
  <li>four<li>
  <li>five<li>
  <li>six<li>
  <li>seven<li>
  <li>eight<li>
  <li>nine<li>
</ul>

一种解决方案是将列表分成两个列表并将其中一个向右浮动,可能带有边距,例如

  <div id="col2">
    <ul>
      <li>one<li>
      <li>two<li>
      <li>three<li>
      <li>four<li>
      <li>five<li>
    </ul>
  </div>

  <ul>
    <li>six<li>
    <li>seven<li>
    <li>eight<li>
    <li>nine<li>
  </ul>

#col2 {
    float: right;
    margin-right: 450px;
}

这行得通,但有许多缺点:

  1. (Un)semantic markup - 它不是真正的 2 个列表,我将一个列表分成 2 个,只是为了更容易设置样式
  2. 必须手动设置边距,使其看起来均匀分布
  3. 如果浏览器足够窄,右侧的列将运行到第二列。

有没有更好的方法来做到这一点,最好不使用表格?


更新:

我尝试了Method 1,但我看到了一些奇怪的结果。如果您查看此3-column list,您会发现前两列中有“漏洞”。知道为什么吗?

【问题讨论】:

  • 你给物品定了高度吗?

标签: html css layout


【解决方案1】:

来自 A List Apart 的This article 涵盖了普遍接受的、接近最佳实践的方法,以执行您所描述的操作。

【讨论】:

  • 天哪,这是一篇很长的文章,我希望这是一个相当简单的任务。感谢您的链接!
  • 因为它是一个无序列表而不是一个有序列表,所以你可以使用方法 1。
  • 很好的链接。这是看起来应该很简单但实际上并不可行的事情之一。
【解决方案2】:

我不知道你是否想要 2 直接低于 1 或者它是否可以在 1 旁边,例如:

    1    2    3
    4    5    6

因为如果是这种情况,您可以为 li 设置 33% 的固定宽度,然后将它们浮动或内联显示。

编辑:这基本上是文章 Rex M 提到的方法 1(只需阅读它,很好):

您可以使用已经存在的 html、第一个完整列表并添加样式:

ul {
    width: 100%;        // for example
}
li {
    float: left;        // option 1
    display: inline;    // option 2, just one of the two
    width: 33%;         // for 3 columns, use 50% for two columns
}

文章里都有。

【讨论】:

    【解决方案3】:

  • -s 的高度不同。尝试为 css 中的列表项设置固定高度。 你也可以使用类似的东西
    border: 1px solid red;
    

    作为列表项的规则之一,看看发生了什么。

    我也在这里投票给一张桌子,因为使用方法一会破坏项目的顺序。但是,如果这对您来说不是问题,那就继续吧。

  • 【讨论】:

      【解决方案4】:

      为什么不使用表格?这正是表的用途。

      【讨论】:

      • 我不得不维护拆分在不同表格列中的列表,而单个列表更容易维护。
      • 我同意杰罗恩。 OP 有一个实体列表 - 不是表格数据。恕我直言,UL 或 DL 是最佳选择,尽管格式化有点棘手。
      • 我不同意这是准确地表的用途。 IMO,表格用于包含行、列、标题、页脚、标题等的表格数据。我所拥有的只是一个我想在多个列上布局的列表。
      • @james curran 不,表格是用于表格的。列表用于列表。 div 和 CSS 用于在视觉上构建事物。这是一个列表。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-14
      • 2023-03-10
      相关资源
      最近更新 更多