使用以下CSS + HTML:
<style>
div.stuff {
overflow: hidden;
width: 100%;
white-space: nowrap;
}
table { width: 100%; }
td { border: 1px dotted black; }
</style>
<table>
<tr><td>
<div class='stuff'>Long text long text long text long text long text long text long text long text long text long text long text long text long text long text long text long text long text long text</div>
</td></tr>
</table>
这会导致表格增长以容纳整个长文本。(将浏览器窗口缩小,以查看屏幕分辨率是否很高。)
我添加了width: 100%
并overflow: hidden
指出长文本应该被截断,但似乎忽略了这一点。如何限制表格/表格单元格/
div,使表格的宽度不超过文档的宽度?
(请不要评论使用表的优点。我确实是在显示表格数据,因此表的使用在语义上是正确的。也请不要质疑剪切文本的用户友好性;在那里实际上是一个“扩展”按钮,允许用户查看全部内容。谢谢!)
(编辑:我也尝试max-width
过,但无济于事。)
为此,您必须将长文本包装成两个div。外层人position: relative
只得到内层人。内部的获取position: absolute
,overflow: hidden
和width: 100%
(这将其限制为表单元格的大小)。
现在,表格布局算法将这些表格单元视为空(因为绝对位置的元素从布局计算中排除了)。因此,我们必须告诉它无论如何都要扩大该列。有趣的是,设置width: 100%
相关<col>
元素的工作原理是,它实际上不会填充宽度的100%,而是100%减去所有其他列(自动调整大小)的宽度。它还需要一个vertical- align: top
,否则(空)外部div会居中对齐,因此绝对定位的元素将偏离半行。
这是一个完整的示例,其中有一个三列,两行的表,显示了此工作方式:
CSS:
div.outer {
position: relative;
}
div.inner {
overflow: hidden;
white-space: nowrap;
position: absolute;
width: 100%;
}
table {
width: 100%;
border-collapse: collapse;
}
td {
border: 1px dotted black;
vertical-align: top;
}
col.fill-the-rest { width: 100%; }
HTML:
<table>
<col><col><col class="fill-the-rest">
<tr>
<td>foo</td>
<td>fooofooooofooooo</td>
<td>
<div class='outer'>
<div class='inner'>
Long text long text long text long text long text long text long text long text long text long text long text long text long text long text long text long text long text long text
</div>
</div>
</td>
</tr>
<tr>
<td>barbarbarbarbar</td>
<td>bar</td>
<td>
<div class='outer'>
<div class='inner'>
Some more long text Some more long text Some more long text Some more long text Some more long text Some more long text Some more long text Some more long text Some more long text Some more long text Some more long text Some more long text Some more long text Some more long text Some more long text Some more long text Some more long text Some more long text
</div>
</div>
</td>
</tr>
</table>
在此示例中,前两列将具有最小可能的大小(即,空格会使它们包装很多,除非您也添加white-space: nowrap
它们)。
问题内容: 我在表容器中有不确定数量的表单元元素。 有没有一种纯粹的CSS方法可以使表格单元具有相等的宽度,即使它们内部具有不同大小的内容? 谢谢。 编辑:具有最大宽度将需要知道您有多少个单元格? 问题答案: 这是工作单元数不确定的有效 您可以为每个父对象固定一个宽度( 表格 ),否则通常将为100%。 诀窍是使用 每个单元上的一定宽度触发它,这里是2%。这将触发 另一个 表算法,浏览器会尽力遵守
法比安 示例图像
问题内容: 许多人仍然使用表格来布局控件,数据等。-流行的jqGrid就是一个例子。但是,发生了一些我似乎无法理解的魔术(它的桌子大声喊叫,可能有多少魔术?) 如何设置表的列宽并使它像jqGrid那样遵守!?如果我尝试复制此内容,即使我设置了every ,只要这些单元格之一的内容大于20px,该单元格就会展开! 有什么想法或见解吗? 问题答案: 您可以尝试对所有行使用标签管理表样式,但是您需要在或
问题内容: 许多人仍然使用表格来布局控件,数据等。-流行的jqGrid就是一个例子。但是,发生了一些我似乎无法理解的魔术(它的桌子大声喊叫,可能会有多少魔术?) 如何设置表的列宽并使它像jqGrid那样遵守!?如果我尝试复制此内容,即使我设置了every ,只要这些单元格之一的内容大于20px,该单元格就会展开! 有什么想法或见解吗? 问题答案: 您可以尝试对所有行使用标签管理表样式,但是您需要在
问题内容: 当用户上传文件时,我在php的error_log中收到类似的错误 PHP警告:11933650字节的POST内容长度超出了第0行中Unknown中的8388608字节的限制 在我的php.ini(在public_html中创建自定义ini文件)中是否可以解决此问题,我必须将其设置为1GB左右多少?我将在php.ini中将其设置更改为此,它将解决问题吗? 我将“ memory_limit
我想创建一个浏览器扩展,它创建一个侧栏。Chrome没有一流的侧边栏,所以我们必须在页面中添加iframe。但是,由于内容安全策略,这在许多页面上会中断。例如。GitHub使用CSP,它不允许将来自其他站点的IFRAME嵌入其中。例如。如果您尝试将CapitalOne.com网站放在GitHub的iframe中,您会得到以下信息: 拒绝对“https://www.capitalone.com/”进