除了最后一列以外,如何将表格单元宽度设置为最小值?
我有一个100%宽度的桌子。 如果我把它放在里面,它们就会以相等长度的列分散开来。 但是,我希望所有的列除了最后有尽可能小的宽度,没有包装文本。
我所做的第一件事就是除了最后一个(除了弃用,但是style="width:1px"
没有任何作用)之外,我在所有的width="1px"
中都设置了width="1px"
单词数据在列中。 在这种情况下,为了保持尽可能小的长度,它包裹了我的文字。
让我来certificate一下。 想象一下这个表格:
--------------------------------------------------------------------------------- element1 | data | junk here | last column --------------------------------------------------------------------------------- elem | more data | other stuff | again, last column --------------------------------------------------------------------------------- more | of | these | rows ---------------------------------------------------------------------------------
无论我尝试什么,我一直得到的是这样的:
--------------------------------------------------------------------------------- element1 | data | junk here | last column --------------------------------------------------------------------------------- elem | more data | other stuff | again, last column --------------------------------------------------------------------------------- more | of | these | rows ---------------------------------------------------------------------------------
或者(即使我设置style="whitespace-wrap:nowrap"
):
--------------------------------------------------------------------------------- | | junk | last element1 | data | | | | here | column --------------------------------------------------------------------------------- | more | other | again, elem | | | last | data | stuff | column --------------------------------------------------------------------------------- more | of | these | rows ---------------------------------------------------------------------------------
我想先拿到我呈现的桌子。 我如何做到这一点? (我宁愿坚持标准和使用CSS。我真的不在乎IE是否还没有实现标准的一部分)
更多的解释:我需要的是保持尽可能短的列没有包装的话(最后一列应该尽可能大,使表的宽度实际上达到100%)。 如果你知道LaTeX,我想要的是当你将它们的宽度设置为100%时,LaTeX中表格自然出现的方式。
注意:我发现了这个,但是它仍然和上一张表一样。
whitespace-wrap: nowrap
是无效的CSS。 这是white-space: nowrap
你正在寻找的white-space: nowrap
。
至less在Google Chrome中可以使用。 ( jsFiddle )
HTML:
<table> <tr> <td class="shrink">element1</td> <td class="shrink">data</td> <td class="shrink">junk here</td> <td class="expand">last column</td> </tr> <tr> <td class="shrink">elem</td> <td class="shrink">more data</td> <td class="shrink">other stuff</td> <td class="expand">again, last column</td> </tr> <tr> <td class="shrink">more</td> <td class="shrink">of </td> <td class="shrink">these</td> <td class="expand">rows</td> </tr> </table>
CSS:
table { border: 1px solid green; border-collapse: collapse; width:100%; } table td { border: 1px solid green; } table td.shrink { white-space:nowrap } table td.expand { width: 99% }
td:not(:last-child){ white-space: nowrap; } td:last-child{ width: 100%; }
通过使用上面的代码,最后一个表格单元格将尽可能大,并且您将防止在之前的表格封装。 这与其他答案一样,但效率更高。
稍微不同的主题,但也许它可以帮助像我这样的人在这个问题上磕磕绊绊。
(我刚刚看到了Campbeln的评论,他在下面写下我的答案之后提出了这个build议,所以这基本上是对他评论的详细解释)
我反过来问题:我想设置一个表列到最小宽度可能没有在白色空间(下面的例子中的最后一列),但另一个的宽度应该是dynamic的(包括换行符):
----------------------------------------------------------------------------------- element1 | data | junk here which can | last column, minimum width, one line span multiple lines ----------------------------------------------------------------------------------- elem | more data | other stuff | again, last column ----------------------------------------------------------------------------------- more | of | these | rows -----------------------------------------------------------------------------------
简单的scheme:
HTML
<table> <tr> <td>element1</td> <td>data</td> <td>junk here which can span multiple lines</td> <td class="shrink">last column, minimum width, one line</td> </tr> <tr> <td>elem</td> <td>more data</td> <td>other stuff</td> <td class="shrink">again, last column</td> </tr> <tr> <td>more</td> <td>of</td> <td>these</td> <td class="shrink">rows</td> </tr> </table>
CSS
td.shrink { white-space: nowrap; width: 1px; }
类shrink
列只能展开到最小宽度,而其他的则保持dynamic。 这是因为td
width
自动扩展以适合整个内容。
示例片段
table { width: 100%; } td { padding: 10px; } td.shrink { white-space: nowrap; width: 1px; }
<table> <tr> <td>element1</td> <td>data</td> <td>junk here which can span multiple lines</td> <td class="shrink">last column, minimum width, one line</td> </tr> <tr> <td>elem</td> <td>more data</td> <td>other stuff</td> <td class="shrink">again, last column</td> </tr> <tr> <td>more</td> <td>of</td> <td>these</td> <td class="shrink">rows</td> </tr> </table>
如果在表格单元中需要多个文本行。
不要使用white-space: nowrap
使用white-space: pre;
代替。
在表单元格中避免使用新行和缩进(空格)等任何代码格式,并使用<br>
来设置新的文本行/行。 喜欢这个:
<td>element1<br><strong>second row</strong></td>
在CodePen上演示
您可以通过在td
放置div
标签来设置固定宽度
table { border: 1px solid green; border-collapse: collapse; width:100%; } table td { border: 1px solid green; } table td:nth-child(1) { width: 1%; } table td:nth-child(1) div { width: 300px; }
<table> <tr> <td><div>element1 element1 element1 element1 element1 element1 </div></td> <td>data</td> <td>junk here</td> <td>last column</td> </tr> <tr> <td><div>element2</div></td> <td>data</td> <td>junk here</td> <td>last column</td> </tr> <tr> <td><div>element3</div></td> <td>data</td> <td>junk here</td> <td>last column</td> </tr> </table>