恐怕沒有直接的解決方案。您可以使用JavaScript進行遊戲,創建僅包含第一行的表的副本,獲取其寬度,丟棄副本並使用寬度設置實際表的寬度。結合設置table-layout: fixed
,這應該處理這種情況。您可以簡化該方法,以便不創建表的副本,而是刪除第二行,稍後將其添加回來。它變得比較難看:
<!doctype html>
<title>Hack</title>
<style>
table { table-layout: fixed }
tr:first-child td { white-space: nowrap }
</style>
<table id=tbl>
<tbody id=tbody>
<tr>
<td id=cell1>Cell 1</td>
<td id=cell2>Cell 2</td>
</tr>
<tr id=row2><td colspan=2>
Very long cell that should just be as long as the first two cells and
wrap, but not take all the screen width.
</table>
<script>
var tbl = document.getElementById('tbl');
var tbody = document.getElementById('tbody');
var row2 = document.getElementById('row2');
var cell1 = document.getElementById('cell1');
var cell2 = document.getElementById('cell2');
tbody.removeChild(row2);
var width = tbl.clientWidth;
var width1 = cell1.clientWidth;
var width2 = cell2.clientWidth;
tbody.appendChild(row2);
cell1.style.width = width1 + 'px';
cell2.style.width = width2 + 'px';
tbl.style.width = width + 'px';
</script>
一個完全不同的想法是使用一種變通方法,其中長文本不是一個細胞,但在caption
元素,放置在表的底部:
<table>
<caption align=bottom style="text-align: left">
Very long cell that should just be as long as the first two cells and
wrap, but not take all the screen width.
<tr>
<td>Cell 1</td>
<td>Cell 2</td>
</tr>
</table>
您使用的是哪個版本的html? –
當前瀏覽器中的HTML5。 – aschoenebeck