Is there a way to hide table rows without affecting the overall table width? I've got some javascript that shows/hides some table rows, but when the rows are set to "display: none;" the table with shringk to fit the contents of the visible rows.
+5
A:
If you are looking to preserve the overall width of the table, you can check it prior to hiding a row, and explicitly set the width style property to this value:
table.style.width = table.clientWidth + "px";
table.rows[3].style.display = "none";
However, this may cause the individual columns to reflow when you hide the row. A possible way to mitigate this is by adding a style to your table:
table {
table-layout: fixed;
}
levik
2008-09-29 01:36:17
...until you resize the window, then the table's fixed width doesn't reflow any more, because it's now a fixed pixel width...
ijw
2009-09-02 12:35:36
+1
A:
For reference, levik's solution works perfectly. In my case, using jQuery, the solution looked something like this:
$('#tableId').width($('#tableId').width());
Wilco
2008-09-29 02:09:00
+2
A:
In CSS, table-layout: fixed;
on your table instructs the browser to honor the sizes you've specified for heights and widths. This generally suppresses auto-resizing by the browser unless you haven't given any hints as to the preferred sizes of your rows and columns.
pcorcoran
2008-09-29 13:23:23
A:
You can do it using pure 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>
labilbe
2008-11-24 15:10:08