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

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

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

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


当前回答

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

如果我错了请指正,但问题是寻找这样的结果。

<表风格= "空白:nowrap;}宽度:100%;" > < tr > <td class="block" style="width:50%">这应该拉伸</td> <td class="block" style="width:50%">这应该拉伸</td> <td class="block" style="width:auto">这应该是内容宽度</td> < / tr > 表> < /

前两个字段将“共享”剩下的页面(注意:如果你在50%的字段中添加更多的文本,它将占用更多的空间),最后一个字段将持续占据表格的主导地位。

如果你喜欢让文本自动换行,你可以移动空白:nowrap;到第3个字段的样式将是在该字段中开始新行的唯一方法。

或者,你可以在最后一个字段上设置一个长度。宽度:150px,并在前两个字段上留下百分比。

希望这能有所帮助!

其他回答

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

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

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

如果我错了请指正,但问题是寻找这样的结果。

<表风格= "空白:nowrap;}宽度:100%;" > < tr > <td class="block" style="width:50%">这应该拉伸</td> <td class="block" style="width:50%">这应该拉伸</td> <td class="block" style="width:auto">这应该是内容宽度</td> < / tr > 表> < /

前两个字段将“共享”剩下的页面(注意:如果你在50%的字段中添加更多的文本,它将占用更多的空间),最后一个字段将持续占据表格的主导地位。

如果你喜欢让文本自动换行,你可以移动空白:nowrap;到第3个字段的样式将是在该字段中开始新行的唯一方法。

或者,你可以在最后一个字段上设置一个长度。宽度:150px,并在前两个字段上留下百分比。

希望这能有所帮助!

设置

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