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.


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.


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.


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';

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.


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.


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.


4

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

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


4

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


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

está funcionando perfeitamente para mim ..


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.


-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!!


-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;


-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 irá removê-lo do fluxo de layout e deve resolver seu problema - o elemento permanecerá no DOM, mas não afetará os outros.


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> 

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.