【问题标题】:Table column width equal to content width表格列宽等于内容宽度
【发布时间】:2015-10-20 11:20:52
【问题描述】:

假设我有一张桌子

<table class="table">
    <thead>
        <tr>
            <th>Name</th>
            <th>Price</th>
            <th>Order Dat</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Cakes</td>
            <td>100 $</td>
            <td>2015-01-09</td>
        </tr>
        <tr>
            <td>Clouthing for Sping</td>
            <td>20000 $</td>
            <td>2015-02-09</td>
        </tr>
    </tbody>
</table>

我希望我的第二列(价格)是其标题长度的确切大小或其列中最长的内容长度。我不希望它,第二列,有浏览器添加到列中的“不可见空白”,以使表格更宽。

我已经尝试过的:

  1. 设置默认百分比或像素宽度。这不适合我,因为我不知道我的数据会保存多久。

  2. 将表格宽度设置为不为 100%。这就是导致表格拉伸并将这些“空白”添加到我的列的原因。问题是我需要我的表格是 100%,我只想我的一个列不要被拉伸。

附:我也在使用引导程序。 (不知道有没有帮助)

编辑:

图片:

http://imgur.com/a/oLsFU

【问题讨论】:

  • 可以发截图吗?我问这个是因为通常情况下,如果内容需要,表格只会增加大小;因此,如果您(或引导程序)不更改此默认行为,它应该始终完全适合其内容。
  • @klaar 添加。如您所见,价格列有很多额外的空间。我想把它全部拿出来。
  • 您想成为主要列的列,看起来像名称,需要将其宽度设置为 100%,这将强制将所有列中的所有剩余宽度集中到该列中。跨度>

标签: html css


【解决方案1】:

您需要将希望额外宽度进入的列设置为 100%。这实际上不会使它成为真正的 100%,它只会迫使它尽可能大。这将使其他列换行以适应该需要,因此请确保将空白属性设置为不换行。

CSS

.table {
    width:100%;
    white-space: nowrap;
}
.nameCol {
    width:100%;
}
.table td {
    padding: 0 5px;
}

HTML

<table class="table">
    <thead>
        <tr>
            <th class="nameCol">Name</th>
            <th>Price</th>
            <th>Order Dat</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Cakes</td>
            <td>100 $</td>
            <td>2015-01-09</td>
        </tr>
        <tr>
            <td>Clouthing for Sping</td>
            <td>20000 $</td>
            <td>2015-02-09</td>
        </tr>
    </tbody>
</table>

小提琴来看看它的实际效果:https://jsfiddle.net/q16dp8ja/1/

附加说明,为了便于阅读,我还添加了一些左右填充,因为现在右侧的列会变窄,而且您应该选择与 .table 不同的类,因为它很容易与 table 元素混淆选择器。

【讨论】:

  • 这几乎就是我想要的!只是一个小但寿。假设 Date 列的日期用空格书写:2015 02 09。您的方法会将列分成 3 行。可以不这样做吗?
  • 没关系,我发现这个东西叫做'white-space: nowrap'。
  • 这是一个非常讨厌的 hack,可能会引入不必要的副作用,因为这不是 width: 100%; 的预期用途,但如果它适合您的上下文,那就没问题了。
  • @klaar 实际上这是一个非常常见的用法,虽然我现在主要使用 DIV,但这个修复与早期的 IE 时代的浏览器非常兼容,而且我还没有看到布局中断。跨度>
  • @Stralos 答案中提到了不换行,并在上面的代码示例中实现。
猜你喜欢
  • 2013-12-21
  • 2016-09-20
  • 2016-03-18
  • 1970-01-01
  • 1970-01-01
  • 2018-01-13
  • 2012-07-16
  • 1970-01-01
  • 2013-05-09
相关资源
最近更新 更多