¿Cómo ocultar las filas de la tabla sin cambiar el tamaño del ancho total?
-
02-07-2019 - |
Pregunta
¿Hay alguna manera de ocultar las filas de la tabla sin afectar el ancho general de la tabla? Tengo un javascript que muestra / oculta algunas filas de la tabla, pero cuando las filas se configuran para mostrar : ninguna;
, la tabla se contrae para ajustarse al contenido de las filas visibles.
Solución
Si desea conservar el ancho general de la tabla, puede verificarlo antes de ocultar una fila y establecer explícitamente la propiedad de estilo de ancho en este valor:
table.style.width = table.clientWidth + "px";
table.rows[3].style.display = "none";
Sin embargo, esto puede hacer que las columnas individuales vuelvan a aparecer al ocultar la fila. Una posible forma de mitigar esto es agregando un estilo a su tabla:
table {
table-layout: fixed;
}
Otros consejos
Como referencia, la solución de levik funciona perfectamente. En mi caso, usando jQuery, la solución se parecía a esto:
$('#tableId').width($('#tableId').width());
Regla CSS visibilidad: colapso
fue diseñado exactamente para eso.
tbody.collapsed > tr {
visibility: collapse;
}
Después de agregar este CSS, puede activar la visibilidad desde JS con:
tbody.classList.toggle('collapsed');
En CSS, table-layout: fixed;
en su tabla le indica al navegador que respete los tamaños que ha especificado para alturas y anchos. Esto generalmente suprime el cambio de tamaño automático del navegador a menos que no haya dado ninguna pista sobre los tamaños preferidos de sus filas y columnas.
Puedes hacerlo usando HTML puro
<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>