Como posso ocultar uma linha da tabela HTML <tr> para que não ocupe espaço?

105

Como posso ocultar uma linha de tabela HTML <tr>para que ela não ocupe espaço? Eu tenho vários <tr>definidos como style="display:none;", mas eles ainda afetam o tamanho da tabela e a borda da tabela reflete as linhas ocultas.

MikeN
fonte
2
Eles estão sendo mostrados / ocultos repetidamente? Ou quando estão escondidos, eles efetivamente se foram para sempre? Porque você poderia usar javascript apenas para remover a linha e provavelmente resolveria o problema.
brettkelly
Quero iniciá-los como ocultos e, em seguida, mostrá-los se o usuário clicar em um botão para "mostrar mais". Quando estão ocultos, não quero que ocupem espaço vertical.
MikeN
Eu tive o mesmo problema, se você remove () a linha com javascript, ainda ocupa algum espaço no IE6. não há como contornar o IE
mkoryak
1
Qual doctype você está usando? Aceito que o simples fato de você estar postando no SO com uma boa reputação indica que você provavelmente sabe o suficiente para evitar o modo peculiares ... mas a única pergunta estúpida é aquela que não foi feita. ... e aquele sobre os periquitos, obviamente.
David diz para restabelecer Monica em
1
Acabei de testar no FF 3.5 e no IE8 - ambos ocultam a linha com display: nenhum
17 de 26 de

Respostas:

37

Eu realmente gostaria de ver o estilo do seu TABLE. Por exemplo, "colapso da fronteira"

Apenas um palpite, mas pode afetar como as linhas 'ocultas' estão sendo renderizadas.

okw
fonte
2
Obrigado! Esse era o estilo que faltava.
MikeN
100

Você pode incluir algum código? Eu adiciono style="display:none;"linhas à minha tabela o tempo todo e isso efetivamente oculta toda a linha.

Calvin
fonte
trabalhou para mim. Eu estava tentando definir a visibilidade: oculto antes :(
Toadums
Ainda há espaçamento: /
fatuhoku de
como evitar que isso mude a largura da tabela ao mostrar ocultar linhas, não quero corrigir o layout da tabela
PirateApp
57

Você pode definir <tr id="result_tr" style="display: none;">e mostrar de volta com JavaScript:

var result_style = document.getElementById('result_tr').style;
result_style.display = 'table-row';
Jamshid Hashimi
fonte
5
Legal! isso é o que eu estava procurando :)
kmario23
4
Obrigado!! Esconder era fácil, mas trazê-los de volta estava se mostrando problemático.
Jefferey Cave
isso muda a largura da tabela, estou fazendo um filtro onde as linhas precisam ser mostradas ocultas com base no que está dentro da
caixa de pesquisa
13

Pensei em adicionar a isso uma outra solução potencial:

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

Eu apenas testei no Chrome, mas colocar isso <tr>oculta a linha MAIS todas as células dentro da linha ainda contribuem para as larguras das colunas. Às vezes, farei uma linha extra na parte inferior de uma tabela com apenas alguns espaçadores que fazem com que certas colunas não possam ter menos do que uma certa largura e, em seguida, ocultarei a linha usando este método. (Eu sei que você deveria ser capaz de fazer isso com outro css, mas nunca fiz isso funcionar)

Novamente, estou em um ambiente puramente cromado, então não tenho ideia de como isso funciona em outros navegadores.

rgbflawed
fonte
1
Isso funciona na maioria dos navegadores modernos, com a notável exceção do Safari, que renderiza espaços em branco em vez de ocultar a linha: developer.mozilla.org/en-US/docs/Web/CSS/visibility
Oscar Scholten
8

Se display: none;não funcionar, que tal configurar em height: 0;vez disso? Em conjunto com uma margem negativa (igual ou maior que a altura das bordas superior e inferior, se houver) para remover ainda mais o elemento? Não creio que position: absolute; top: 0; left: -4000px;funcione, mas pode valer a pena tentar.

Pela minha parte, usar display: nonefunciona bem.

David diz reintegrar Monica
fonte
4

Adicione algumas das seguintes linhas de altura: 0px; font-size: 0px; height: 0px; margin: 0; padding: 0;

Eu esqueci qual deles faz isso. Acho que é a altura da linha para o IE6.

s_hewitt
fonte
4

Eu estava tendo o mesmo problema, até adicionei style = "display: none" a cada célula.

No final, usei comentários HTML <!-- [HTML] -->

Simon Hughes
fonte
4

Você pode usar o estilo display: none com tr para ocultar e funcionará com todos os navegadores.

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

está funcionando perfeitamente para mim ..

Vignesh
fonte
2

Isso aconteceu comigo e fiquei perplexo com o porquê. Então eu percebi que se eu removesse qualquer nbsp; eu tinha dentro das linhas, então as linhas não ocuparam nenhum espaço.

Kevin H
fonte
-1

Você precisa colocar a mudança do tipo de entrada para oculto, todas as funções dele funcionam, mas não é visível na página

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

contanto que o tipo de entrada seja definido para que você possa alterar o resto. Boa sorte!!

user5431987
fonte
-3

Eu estava tendo o mesmo problema e resolvi o problema. O CSS anterior era overflow: hidden; índice z: 999999;

Eu mudo para overflow: visible;

Ray Innov
fonte
-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;
}
alpc
fonte
-5

position: absolute irá removê-lo do fluxo de layout e deve resolver seu problema - o elemento permanecerá no DOM, mas não afetará os outros.

user2415617
fonte
fwiw Acho que esta é uma ótima solução se você deseja ocultar uma coluna, em algumas situações específicas. além disso, adicioneopacity: 0
Grapho de
-5

Você pode definir

<table>
  <tr style="visibility: hidden"></tr>
</table> 
Ramy Said
fonte
5
Com visibility: hidden;o elemento ainda ocupará espaço, essa é a diferença entre as propriedades visibilityedisplay
Dmitry Pashkevich
Use assim<table><tr style="display: none;"><td></td></tr></table>
Sanu