如何隐藏HTML表行<tr>,使其不占用空间?


105

如何隐藏HTML表格行<tr>,使其不占用空间?我将多个<tr>设置为style="display:none;",但是它们仍然影响表的大小,并且表的边框反映了隐藏的行。


2
是否重复显示/隐藏它们?或者,当它们被隐藏时,它们是否真的永久消失了?因为您可以使用javascript删除行,所以可能会解决您的问题。
brettkelly

我想以隐藏状态启动它们,然后在用户单击按钮“显示更多”时显示它们。隐藏它们时,我不希望它们占据垂直空间。
MikeN

我有同样的问题,如果您使用JavaScript将remove()删除,它仍会占用IE6中的某些空间。无处可走IE
mkoryak

1
您正在使用什么文档类型?我接受一个简单的事实,那就是您在SO上发布了很好的代表,这表明您可能知道足够避免古怪的模式……但是唯一愚蠢的问题是没有被问到的问题。...以及关于虎皮鹦鹉的一种,显然。
大卫说,请

1
我刚刚在FF 3.5和IE8中进行了测试-都用display:none隐瞒了该行

Answers:


37

我真的很想看看您的TABLE的样式。例如“边界崩溃”

只是一个猜测,但这可能会影响呈现“隐藏”行的方式。


2
谢谢!那是缺少的风格。
MikeN

100

可以包含一些代码吗?我一直在style="display:none;"向表添加行,它有效地隐藏了整行。


为我工作。我正在尝试设置可见性:隐藏于:(
Toadums 2012年

仍然有间隔:/
fatuhoku

当您显示隐藏行时如何防止这种方式改变表格的宽度,我不想固定表格的布局
PirateApp

57

您可以设置<tr id="result_tr" style="display: none;">,然后使用JavaScript 将其显示回:

var result_style = document.getElementById('result_tr').style;
result_style.display = 'table-row';

5
凉!这是我一直在寻找的东西:)
kmario23 2014年

4
谢谢!!隐藏起来很容易,但是将它们绑回却是有问题的。
Jefferey Cave

这改变了表格的宽度,我正在做一个过滤器,其中需要根据搜索
框内的内容

13

以为我会为此添加一个潜在的其他解决方案:

<tr style='visibility:collapse'><td>stuff</td></tr>

我仅在Chrome上进行了测试,但将其<tr>隐藏起来会隐藏行,并且行内的所有单元格仍会影响列的宽度。有时,我会在表的底部增加一些行,并在其中添加一些分隔符,以使某些列的宽度不能小于某个宽度,然后使用此方法隐藏该行。(我知道您应该能够与其他css一起执行此操作,但我从未使它起作用)

同样,我处于纯Chrome环境中,所以我不知道它在其他浏览器中如何工作。


1
这适用于大多数现代浏览器,但值得注意的是Safari,该浏览器呈现空白而不是隐藏行:developer.mozilla.org/en-US/docs/Web/CSS/visibility
Oscar Scholten

8

如果display: none;不起作用,height: 0;改为设置如何?加上负边距(等于或大于顶部和底部边框的高度,如果有的话)以进一步删除元素?我不认为position: absolute; top: 0; left: -4000px;这行得通,但是可能值得尝试。

就我而言,使用display: none效果很好。


4

添加以下一些内容:line-height:0px; font-size:0px; height:0px; margin:0; padding:0;

我忘记了哪一个。我认为这是IE6的行高。


4

我遇到了同样的问题,甚至向每个单元格添加了style =“ display:none”。

最后,我使用了HTML注释 <!-- [HTML] -->



3
var result_style = document.getElementById('result_tr').style;
result_style.display = '';

正在为我完美地工作..


2

这发生在我身上,我对为什么感到困惑。然后我注意到,如果我删除任何nbsp;我在行内,然后行不占用任何空间。


-1

您需要将输入类型的更改更改为隐藏,其所有功能均有效,但在页面上不可见

<input type="hidden" name="" id="" value="">

只要将输入类型设置为,您就可以更改其余的内容。祝好运!!


-3

我遇到了同样的问题,并且解决了该问题。先前的CSS溢出了:隐藏了;z-index:999999;

我将其更改为overflow:visible;


-3

HTML:

<input type="checkbox" id="attraction" checked="checked" onchange="updateMap()">poi.attraction</input>

JavaScript:

function updateMap() {
     map.setOptions({'styles': getStyles() });
} 

function getStyles() {
    var styles = [];
    for (var i=0; i < types.length; i++) {
      var style = {};
      var type = types[i];
      var enabled = document.getElementById(type).checked;
      style['featureType'] = 'poi.' + type;
      style['elementType'] = 'labels';
      style['stylers'] = [{'visibility' : (enabled ? 'on' : 'off') }];
      styles.push(style);
    }
    return styles;
}

-5

position: absolute 会将其从布局流程中删除,并应解决您的问题-该元素将保留在DOM中,但不会影响其他元素。


首先,如果您想在某些特定情况下隐藏列,我认为这是一个很好的解决方案。另外添加opacity: 0
Grapho

-5

你可以设定

<table>
  <tr style="visibility: hidden"></tr>
</table> 

5
visibility: hidden;元素仍然会占用空间,那就是visibilitydisplay属性之间的区别
Dmitry Pashkevich

像这样使用<table><tr style="display: none;"><td></td></tr></table>
Sanu
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.