我有一个网页,其中包含由ASP.NET控件生成的HTML表格。表格的顶行模拟工具栏。排在第一行的是这样的:
<tr>
<td style="white-space:nowrap;">
<span>Very long title</span>
</td>
<td>
{ bunch of hyperlinks with background images, emulating a toolbar }
</td>
</tr>
我坚持这样一个事实,即这是一个表格,标题区域的内容放在一个范围内,并且可能具有指定无包装的内联样式。
当页面变窄时,该表应该缩小范围,并且它做得非常好。但是,如果实际的标题文本(可以变化)太长,它实际上可以限制表格的缩小程度,这可能导致与页面上的其他内容重叠。 (我正在使用IE8,BTW。)
我尝试将overflow:hidden
,text-overflow:ellipsis
和display: inline-block
应用于范围,并通过样式表为表格单元格添加宽度值。 (Display:block
在跨度上加倍了行的高度,这是我不想要的,所以inline-block
是我的选择。)标题文本显示为截断,正如我想要的那样。但桌子不会变得更窄。
在通过IEDT改变价值观和风格后,我得出结论,当弄清楚桌子有多窄时,文本仍被视为全长。跨度相对较短,只出现了跨度中出现的文本,但对于table-cell
宽度目的,文本仍然存在。
我没有发现任何地方记录这种现象,但也许我只是没有足够的。 :)如果text-overflow
无法帮助我,我想我必须通过脚本动态截断标题,我宁愿不这样做。有没有办法只通过CSS做我想做的事情?
答案 0 :(得分:7)
表的单元格显示行为与块的常规行为不同。为了使它更典型,你需要先将table的table-layout属性更改为“fixed”并设置表宽度:
table { table-layout: fixed; width: 100%; }
在大多数情况下,它会禁用单元格的自动调整大小。之后你可以照常设置td的宽度和溢出。
td.title { white-space:nowrap;overflow: hidden; width: 200px; }
答案 1 :(得分:0)
我认为这就是你要找的东西。首先摆脱style="white-space:nowrap;"
。
接下来将您的<span>
改为<div>
这样的风格:
<div style="height 18px;overflow:hidden;">
高度值必须调整到行高,但这应该有效。