使细胞宽度适合内容

时间:2012-06-29 18:33:50

标签: 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>

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

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

enter image description here

7 个答案:

答案 0 :(得分:390)

我不确定我是否理解你的问题,但我会抓住它。 JSfiddle of the example

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>

CSS:

td{
    border:1px solid #000;
}

tr td:last-child{
    width:1%;
    white-space:nowrap;
}

答案 1 :(得分:37)

设置

max-width:100%;
white-space:nowrap;

将解决您的问题。

答案 2 :(得分: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;
}

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

答案 3 :(得分:2)

根据我能找到的所有规格,将CSS宽度设置为元素的1%或100%与父元素相关。尽管Blink Rendering Engine(Chrome)和Gecko(Firefox)在撰写本文时似乎处理了1%或100%(使列缩小或列填充可用空间),但根据所有CSS规范无法保证我可以找到正确渲染它。

一个选项是用CSS4 flex divs替换表:

https://css-tricks.com/snippets/css/a-guide-to-flexbox/

适用于新浏览器,即IE11 +请参阅本文底部的表格。

答案 4 :(得分:0)

这解决了我的问题

.d-inline-block {
    display: inline-block!important;
}

答案 5 :(得分:0)

简单:

    <div style='overflow-x:scroll;overflow-y:scroll;width:100%;height:100%'>

答案 6 :(得分:0)

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

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

<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>

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

如果您愿意让文本自动换行,则可以移动 white-space:nowrap;第三个字段的样式
是在该字段中开始换行的唯一方法。

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

希望这会有所帮助!