使细胞宽度适合内容

Man*_*eld 244 html css html-table

给定以下标记,我如何使用CSS强制一个单元格(列中的所有单元格)适合其中的内容宽度而不是拉伸(这是默认行为)?

<style type="text/css">
td.block
{
border: 1px solid black;
}
</style>
<table style="width: 100%;">
<tr>
    <td class="block">this should stretch</td>
    <td class="block">this should stretch</td>
    <td class="block">this should be the content width</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)

编辑:我意识到我可以硬编码宽度,但我宁愿不这样做,因为该列中的内容是动态的.

查看下图,第一张图像是标记产生的图像.第二张图是我想要的.

在此输入图像描述

Met*_*rog 414

我不确定我是否理解你的问题,但我会抓住它.JSfiddle的例子.

HTML:

<table style="width: 100%;">
<tr>
    <td class="block">this should stretch</td>
    <td class="block">this should stretch</td>
    <td class="block">this should be the content width</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)

CSS:

td{
    border:1px solid #000;
}

tr td:last-child{
    width:1%;
    white-space:nowrap;
}
Run Code Online (Sandbox Code Playgroud)

  • 更简洁的方法IMO将定义一个名为"nostretch"(或类似的东西)的样式,然后在CSS中定义nostretch以使宽度:1%和nowrap.然后最后的TD会有'class ='nostretch block"'.这样你就可以"取消"你想要的任何细胞. (44认同)
  • @diEcho我没有写那个部分,那是来自示例代码.无论如何,在元素上使用width属性是不好的做法.在这个快速示例中,内联CSS很好,但如果这是生产级代码,则应将其抽象为文件. (13认同)
  • 这仅在内容宽度宽度时才有效:1% - 对吗?因为如果内容小于宽度:1%,则单元格将更大. (5认同)
  • 这是一个很好的解决方案,但遗憾的是,在Bootstrap 3中我的按钮组将包含这个:http://jsfiddle.net/wexdX/326/任何想法我怎么能压制它? (3认同)
  • 为什么你写`<table style ="width:100%">`而不是`<table width ="100%">` (2认同)
  • @Adam是的,有趣的是也知道,这**也可以反过来** - 你可以设置"吸收"列(通常需要)有100%的宽度,道具=> http:// stackoverflow.com/a/26915414/1835470 (2认同)
  • 在我的测试中,这反过来不起作用,并且使用 `1px` 比使用 `1%` 更好。 (2认同)

Shu*_*gam 39

设置

max-width:100%;
white-space:nowrap;
Run Code Online (Sandbox Code Playgroud)

会解决你的问题.

  • 这应该应用于什么元素? (16认同)
  • 如果有更多上下文,这个答案会更好。另外,不要在评论中乞求积分。 (11认同)
  • 我在firefox上尝试过它并没有用. (6认同)

小智 13

有很多方法可以做到这一点!

如果我错了,请纠正我,但问题是寻找这种结果。

table,
td {
  border: 1px solid black;
}
Run Code Online (Sandbox Code Playgroud)
<table style="white-space:nowrap;width:100%;">
  <tr>
    <td class="block" style="width:50%">this should stretch</td>
    <td class="block" style="width:50%">this should stretch</td>
    <td class="block" style="width:auto">this should be the content width</td>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

前 2 个字段将“共享”剩余页面(注意:如果您向任一 50% 字段添加更多文本,则会占用更多空间),最后一个字段将持续占据表格的主导地位。

如果您愿意让文本换行,您可以移动空白:nowrap; 遵循第三个字段的样式
将是在该字段中开始新行的唯一方法。

或者,您可以在最后一个字段上设置长度,即。宽度:150px,并在前 2 个字段中保留百分比。

希望这可以帮助!


M. *_*ier 11

一、设置

td {
  max-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}
Run Code Online (Sandbox Code Playgroud)

确保您的表格单元格会拉伸。

现在你只需要

td.fit {
  width: 0;
  min-width: fit-content;
}
Run Code Online (Sandbox Code Playgroud)

在你的试衣细胞上。

请注意,现在只有当所有拟合单元格的内容太多而无法适应表格宽度时,表格才会在宽度上溢出100%

td {
  max-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}
Run Code Online (Sandbox Code Playgroud)
td.fit {
  width: 0;
  min-width: fit-content;
}
Run Code Online (Sandbox Code Playgroud)


mys*_*set 7

对我来说,这是最好的自动调整和自动调整表及其列(使用css!important ...只有你不能没有)

.myclass table {
    table-layout: auto !important;
}

.myclass th, .myclass td, .myclass thead th, .myclass tbody td, .myclass tfoot td, .myclass tfoot th {
    width: auto !important;
}
Run Code Online (Sandbox Code Playgroud)

不要为表或表列指定css宽度.如果表格内容较大,则会超过屏幕尺寸.