表格列,使用css设置最小和最大宽度

时间:2013-08-21 21:24:10

标签: css html5 css3 html-table

我想有一个表可以在列中伸展但我在css中的最小和最大宽度有点麻烦。

似乎还有一些相互矛盾的答案:

我想要以下

table{
   width:100%;
}
.a, .b, .c
{
    background-color: red;
}
.a
{
    min-width: 10px;
    max-width: 20px;
}
.b
{
    min-width: 40px;
    max-width: 45px;
}
.c
{
}

<table>
    <tr>
        <td class="a">A</td>
        <td class="b">B</td>
        <td class="c">C</td>
    </tr>
</table>

有没有办法在没有javascript的情况下实现这个目标(即用表格约束拉伸列)?

下面的表格是一些实际为某些不同的CSS设置呈现的内容:

enter image description here

1 个答案:

答案 0 :(得分:87)

表的工作方式不同;有时候反直觉。

解决方案是在表格单元格上使用width而不是max-width

虽然在这种情况下可能听起来细胞不会收缩到给定宽度以下,但实际上它们会 对c没有限制,如果你给表格宽度为70px,a,b和c的宽度分别为16,42和12像素。
如果表格宽度为400像素,它们的行为就像您在网格中所说的那样 只有当你试图给表太小时(小于a.min + b.min + C的内容)它才会失败:那么表本身将比指定的更宽。

我根据你的小提琴制作了一个片段,我删除了所有的边框和填充以及边框间距,这样你就可以更准确地测量宽度。

table {
  width: 70px;
}

table, tbody, tr, td {
  margin: 0;
  padding: 0;
  border: 0;
  border-spacing: 0;
}

.a, .c {
  background-color: red;
}

.b {
  background-color: #F77;
}

.a {
  min-width: 10px;
  width: 20px;
  max-width: 20px;
}

.b {
  min-width: 40px;
  width: 45px;
  max-width: 45px;
}

.c {}
<table>
  <tr>
    <td class="a">A</td>
    <td class="b">B</td>
    <td class="c">C</td>
  </tr>
</table>