CSS:如何制作水平(UL)列表,使每个项目保持统一宽度?

时间:2010-08-15 14:53:03

标签: css list width

也就是说,没有为每个单独的项目定义特定的“宽度”金额。同样,最宽的元素(按其内容)设置每个其他元素的宽度。

此外,如何在容器中100%跨越所述列表,同时保持每个项目的宽度相同?

3 个答案:

答案 0 :(得分:2)

如果我理解正确:

  1. 你想要一个清单。
  2. 您希望每个列表项的宽度相同。
  3. 您希望该宽度为最宽列表项内容的宽度

  4. 您还想要一种在容器中均匀分隔列表项的方法, 这似乎与3不相容,因为它们不会按内容均匀分布,而是按容器大小分开。

  5. 所以我假设您需要两种不同的解决方案。

    我认为你可以做到

    <style>
      ul, li{float:left;margin;padding:0;display:block;}
      li {clear:left;width:100%;margin:1px 0;background:#03a;}
    </style>
    <ul>
      <li>Item 1</li>
      <li>Item 2 which is longer</li>
      <li>Item 3</li>
    </ul>
    

    适用于某些浏览器。我似乎记得它不能在IE中工作,并且必须使用css表达式才能工作。

    这个想法是ul和li的浮动使它们缩小到它们的内容宽度。 li被清​​除并设置为容器宽度的100%,同样的容器缩小到它们的大小。

    -

    除非您知道列表项的数量,否则CSS中的其他选项是不可能的。 虽然如果你不知道列表项的数量,这意味着在服务器端或客户端都有脚本,你可以找到项目的数量。 :)

    我过去通过给ul一个包含子数的类,并使用大量CSS规则并希望一根棍子来解决这个问题。

    例如

    <style>
      ul.lis1 li {width:100%}
      ul.lis2 li {width:50%}
      ul.lis3 li {width:33.3%}
      ul.lis4 li {width:25%}
      /* ... you can keep going forever here, though there'll be a point at which they become too thin and your UI breaks anyway, */
    </style>
    <ul class="lis4"> <!-- lis4 is generated by PHP or Ruby or whatever -->
      <li>item 1</li>
      <li>item 2</li>
      <li>item 3</li>
      <li>item 4</li>
    </ul>
    

答案 1 :(得分:1)

使用具有固定表格布局的css表。

结果将是<li>每个<ul>共享ul { display: table; table-layout: fixed; width: 100%; border: 1px solid #c2c2c2; box-sizing: border-box; } li { text-align: center; display: table-cell; border-right: 1px solid #c2c2c2; } 的相等部分,无论列表中有多少项。

{{1}}

<强> Example FIDDLE

答案 2 :(得分:0)

你需要为此浮动它们:

ul {
  list-style: none;
}

ul li {
  float: left;
  width: 100px; /* Or whatever arbitrary amount you want */
}

列表应该自动跨越容器的宽度 - 它是一个块元素。