对于关注的表,最后一行用于指定表中各列的宽度(例如,最后一行的第一个单元格的{{1 }} 标签)。我无法控制任何宽度值。此类表的示例是:
style="width: 100px"
我要实现的是:如果单元格内容换行,则其HTML宽度必须大于<tr>
且小于<table border="1">
<tr>
<th>row 1 header</th>
<td>row 1 col 2</td>
<td>row 1 col 3</td>
</tr>
<tr>
<th>row 2 header</th>
<td>row 2 col 2</td>
<td>row 2 col 3, lots of content...............</td>
</tr>
<tr>
<td style="width: 160px">last row col 1</td>
<td style="width: 130px">last row col 2</td>
<td style="width: 200px">last row col 3</td>
</tr>
</table>
。
例如:
假设上表中的350px
内容为550px
长,因此在最后一行中,考虑到宽度约束(row 2 col 3
),其内容将换行。在这种情况下,表格的300px
的宽度应扩展到200px
,与内容的像素长度相同。
如果column 3
内容的像素长度为300px
长,则表row 2 col 3
的宽度应不小于400px
,并且其内容应换成新的线。
我当前的想法:
column 3
中,以测量每个单元格内容的像素长度。然后,我将检查是否需要根据宽度调整任何列的大小。我当前想法的问题是,我可能需要遍历表中的许多单元格,还有其他更好的方法吗?
答案 0 :(得分:0)
如果第2行第3列内容的像素长度为400px长,则表第3列的宽度不应小于350px,并且其内容应换行。
如果第3列的宽度为400px,您是否将宽度设置为400px,然后内容就不会换行?
我无法控制任何宽度值。
您可以控制什么?如果您可以编写在页面中运行的javascript,则可以使用该javascript修改页面中已有的宽度。
span
宽度是否会引起误解,实际上与td
宽度相同?td
元素的宽度,则只需检查一行,由于整个列的宽度相同,因此的后续行中的所有单元格都将具有相同的宽度。max-width
在这里不起作用吗?如果没有,您正在寻找不提供的行为? (请参见下面的代码块)您的表中是否有rowspan
个单元格?那会使事情复杂化。
let tds = document.querySelectorAll("td,th");
for (let i = 0; i < tds.length; i++) {
log.innerText += getComputedStyle(tds[i]).width + "_";
}
<table border="1">
<tr>
<th>row 1 header</th>
<td>row 1 col 2</td>
<td>row 1 col 3</td>
</tr>
<tr>
<th>row 2 header</th>
<td>row 2 col 2</td>
<td>row 2 col 3, lots of content......................</td> <!-- I made this non-breakable word even longer -->
</tr>
<tr>
<td style="max-width:550px">last row col 1</td> <!-- add max-width and let the table layout algorithm sort it out -->
<td style="max-width:550px">last row col 2 last row col 2 last row col 2</td>
<td style="max-width:550px">last row col 3</td>
</tr>
</table>
<div id=log></div>