Javascript 如何在不调整总宽度的情况下隐藏表行?
有没有一种方法可以在不影响整个表宽度的情况下隐藏表行?我有一些javascript显示/隐藏一些表行,但是当这些行设置为Javascript 如何在不调整总宽度的情况下隐藏表行?,javascript,html,css,xhtml,html-table,Javascript,Html,Css,Xhtml,Html Table,有没有一种方法可以在不影响整个表宽度的情况下隐藏表行?我有一些javascript显示/隐藏一些表行,但是当这些行设置为display:none,该表将收缩以适应可见行的内容。如果希望保留表的总宽度,可以在隐藏行之前进行检查,并将“宽度样式”属性显式设置为此值: table.style.width = table.clientWidth + "px"; table.rows[3].style.display = "none"; 但是,隐藏行时,这可能会导致单个列回流。缓解此问题的一种可能方法是
display:none代码>,该表将收缩以适应可见行的内容。如果希望保留表的总宽度,可以在隐藏行之前进行检查,并将“宽度样式”属性显式设置为此值:
table.style.width = table.clientWidth + "px";
table.rows[3].style.display = "none";
但是,隐藏行时,这可能会导致单个列回流。缓解此问题的一种可能方法是向表中添加样式:
table {
table-layout: fixed;
}
作为参考,levik的解决方案非常有效。在我的例子中,使用jQuery,解决方案如下所示:
$('#tableId').width($('#tableId').width());
在CSS中,表格布局:固定表格上的代码>指示浏览器遵守您为高度和宽度指定的尺寸。这通常会抑制浏览器自动调整大小,除非您没有给出任何关于行和列的首选大小的提示。您可以使用纯HTML进行此操作
1.
2.
3.
4.
CSS规则正是为此而设计的
tbody.collapsed>tr{
能见度:塌陷;
}
添加此CSS后,您可以通过以下方式从JS触发可见性:
tbody.classList.toggle('collapsed');
…在调整窗口大小之前,表格的固定宽度不再回流,因为它现在是固定的像素宽度…我使用表格布局:固定;我的问题消失了:这对我来说绝对是最好的答案。