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

道明。块{ 边框:1px纯黑色; } <table style="width: 100%;"> < tr > <td class="block">这应该拉伸</td> <td class="block">这应该拉伸</td> <td class="block">这应该是内容宽度</td> < / tr > 表> < /

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

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


当前回答

对我来说,这是最好的自动拟合和自动调整表和它的列(使用css !重要…除非你不能没有)

.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宽度。 如果表格内容较大,它将超过屏幕大小为。

其他回答

我不确定我是否理解你的问题,但我会尝试一下:

td { 边框:1px实心#000; } Tr td:最后一个子{ 宽度:1%; 空白:nowrap;} } <table style="width: 100%;"> < tr > <td class="block">这应该拉伸</td> <td class="block">这应该拉伸</td> <td class="block">这应该是内容宽度</td> < / tr > 表> < /

设置

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

会解决你的问题。

根据我所能找到的所有规格,将CSS宽度设置为元素的1%或100%与父相关。虽然Blink渲染引擎(Chrome)和Gecko (Firefox)在写作的时候似乎可以很好地处理1%或100%(使列缩小或列填充可用空间),但根据我能找到的所有CSS规范,它并不能保证正确地渲染它。

一种选择是用CSS4 flex divs替换表:

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

这适用于新的浏览器,即IE11+,见文章底部的表格。

简单:

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

首先,设置

td {
  max-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}

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

现在你只需要

td.fit {
  width: 0;
  min-width: fit-content;
}

在你的电池上。

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

表{ 空白:nowrap;} 宽度:100%; } td { 边框:1px纯黑色; } td { max-width: 0; 溢出:隐藏; 文本溢出:省略; } 道明。适合{ 宽度:0; min-width:适合内容; } <表> < tr > <td class="stretch">这个应该拉伸</td> <td class="stretch">这个应该拉伸</td> <td class="fit">这应该是内容宽度</td> < / tr > 表> < /