7

有没有办法在不影响整个表格宽度的情况下隐藏表格行?我有一些显示/隐藏一些表格行的 javascript,但是当这些行设置为display: none;时,表格会缩小以适应可见行的内容。

4

5 回答 5

8

如果您希望保留表格的整体宽度,您可以在隐藏一行之前检查它,并将宽度样式属性显式设置为此值:

table.style.width = table.clientWidth + "px";
table.rows[3].style.display = "none";

但是,当您隐藏行时,这可能会导致各个列重排。减轻这种情况的一种可能方法是向表中添加样式:

 table {
  table-layout: fixed;
 }
于 2008-09-29T01:36:17.087 回答
6

CSS 规则visibility: collapse正是为此而设计的。

tbody.collapsed > tr {
    visibility: collapse;
}

添加此 CSS 后,您可以通过以下方式触发 JS 的可见性:

tbody.classList.toggle('collapsed');
于 2019-03-07T16:08:44.840 回答
2

作为参考,levik 的解决方案非常有效。在我的例子中,使用 jQuery,解决方案看起来像这样:

$('#tableId').width($('#tableId').width());
于 2008-09-29T02:09:00.333 回答
1

在 CSS 中,table-layout: fixed;在您的表格上指示浏览器遵循您为高度和宽度指定的尺寸。这通常会抑制浏览器自动调整大小,除非您没有给出任何关于行和列的首选大小的提示。

于 2008-09-29T13:23:23.737 回答
0

您可以使用纯 HTML 来完成

<table border="1">
  <colgroup>
    <col width="150px" />
    <col width="10px"  />
    <col width="220px" />
  </colgroup>
  <tr>
    <td valign="top">1</td>
    <td> </td>
    <td>2</td>
  </tr>
  <tr>
    <td>3</td>
    <td> </td>
    <td>4</td>
  </tr>
</table>

于 2008-11-24T15:10:08.623 回答