Comment puis-je masquer une ligne de tableau HTML <tr> afin qu'elle ne prenne aucun espace?

105

Comment puis-je masquer une ligne de tableau HTML <tr>afin qu'elle ne prenne aucun espace? J'ai mis plusieurs <tr>à style="display:none;", mais ils affectent toujours la taille de la table et la bordure de la table reflète les lignes cachées.

MikeN
la source
2
Sont-ils affichés / masqués à plusieurs reprises? Ou quand ils sont cachés, sont-ils effectivement partis pour de bon? Parce que vous pouvez utiliser javascript pour supprimer simplement la ligne et cela résoudra probablement votre problème.
brettkelly
Je veux les démarrer comme cachés, puis les montrer si l'utilisateur clique sur un bouton pour "afficher plus". Quand ils sont cachés, je ne veux pas qu'ils prennent de l'espace vertical.
MikeN
J'ai eu ce même problème, si vous supprimez () la ligne avec javascript, cela prend toujours de l'espace dans IE6. pas moyen de sucky IE
mkoryak
1
Quel doctype utilisez-vous? J'accepte que le simple fait que vous postez sur SO avec un bon représentant indique que vous en savez probablement assez pour éviter le mode bizarreries ... mais la seule question stupide est celle qui n'est pas posée. ... et celui sur les perruches, évidemment.
David dit de réintégrer Monica le
1
Je viens de tester dans FF 3.5 et IE8 - les deux masquent la ligne avec affichage: aucun
17 du 26

Réponses:

37

J'aimerais vraiment voir le style de votre TABLE. Par exemple, "border-collapse"

Juste une supposition, mais cela pourrait affecter la façon dont les lignes «cachées» sont rendues.

okw
la source
2
Merci! C'était le style manquant.
MikeN
100

Pouvez-vous inclure du code? J'ajoute style="display:none;"à mon tableau des lignes tout le temps et cela masque efficacement la ligne entière.

Calvin
la source
travaillé pour moi. J'essayais de définir la visibilité: caché avant :(
Toadums
Il y a encore de l'espacement: /
fatuhoku
comment éviter que cela ne change la largeur du tableau lorsque vous affichez des lignes de masquage, je ne veux pas faire de mise en page du tableau corrigé
PirateApp
57

Vous pouvez définir <tr id="result_tr" style="display: none;">et ensuite l'afficher avec JavaScript:

var result_style = document.getElementById('result_tr').style;
result_style.display = 'table-row';
Jamshid Hashimi
la source
5
Cool! c'est ce que je cherchais :)
kmario23
4
Je vous remercie!! Se cacher était facile, mais les ramener se révélait problématique.
Jefferey Cave
cela change la largeur du tableau, je fais un filtre où les lignes doivent être affichées cachées en fonction de ce qui se trouve dans la boîte de recherche
PirateApp
13

Je pensais que j'ajouterais à cela une autre solution potentielle:

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

Je ne l'ai testé que sur Chrome, mais le mettre sur la ligne <tr>cache PLUS toutes les cellules à l'intérieur de la ligne contribuent toujours à la largeur des colonnes. Je vais parfois créer une ligne supplémentaire en bas d'un tableau avec juste quelques espaceurs qui font que certaines colonnes ne peuvent pas être inférieures à une certaine largeur, puis masquer la ligne en utilisant cette méthode. (Je sais que vous êtes censé pouvoir le faire avec d'autres css mais je n'ai jamais réussi à faire fonctionner cela)

Encore une fois, je suis dans un environnement purement chromé, donc je n'ai aucune idée de comment cela fonctionne dans d'autres navigateurs.

rgb défectueux
la source
1
Cela fonctionne dans la plupart des navigateurs modernes, à l'exception notable de Safari, qui restitue des espaces plutôt que de masquer la ligne: developer.mozilla.org/en-US/docs/Web/CSS/visibility
Oscar Scholten
8

Si display: none;cela ne fonctionne pas, que diriez-vous de régler à la height: 0;place? En conjonction avec une marge négative (égale ou supérieure à la hauteur des bordures supérieure et inférieure, le cas échéant) pour supprimer davantage l'élément? Je n'imagine pas que position: absolute; top: 0; left: -4000px;cela fonctionnerait, mais cela vaut peut-être la peine d'essayer.

Pour ma part, l'utilisation display: nonefonctionne très bien.

David dit de réintégrer Monica
la source
4

Ajoutez une partie de la hauteur de ligne suivante: 0px; font-size: 0px; height: 0px; margin: 0; padding: 0;

J'oublie lequel le fait. Je pense que c'est la hauteur de la ligne pour IE6.

s_hewitt
la source
4

J'avais le même problème, j'ai même ajouté style = "display: none" à chaque cellule.

Au final, j'ai utilisé des commentaires HTML <!-- [HTML] -->

Simon Hughes
la source
4

Vous pouvez utiliser l'affichage de style: aucun avec tr pour masquer et cela fonctionnera avec tous les navigateurs.

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

fonctionne parfaitement pour moi ..

Vignesh
la source
2

Cela m'est arrivé et j'étais perplexe quant à la raison. Ensuite, j'ai remarqué que si je supprimais tout nbsp; j'avais dans les rangées, puis les rangées ne prenaient aucun espace.

Kevin H
la source
-1

Vous devez mettre le changement du type d'entrée sur masqué, toutes ses fonctions fonctionnent mais ce n'est pas visible sur la page

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

tant que le type d'entrée est défini sur cela, vous pouvez modifier le reste. Bonne chance!!

user5431987
la source
-3

J'avais le même problème et j'ai résolu le problème. Les css précédents étaient débordés: caché; indice z: 999999;

Je le change en débordement: visible;

Ray Innov
la source
-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
la source
-5

position: absolute le supprimera du flux de mise en page et devrait résoudre votre problème - l'élément restera dans le DOM mais n'affectera pas les autres.

user2415617
la source
fwiw Je pense que c'est une excellente solution si vous souhaitez masquer une colonne, dans certaines situations spécifiques. en plus ajouteropacity: 0
Grapho
-5

Vous pouvez définir

<table>
  <tr style="visibility: hidden"></tr>
</table> 
Ramy a dit
la source
5
Avec visibility: hidden;l'élément prendra encore de la place, c'est la différence entre visibilityet displaypropriétés
Dmitry Pashkevich
Utilisez comme ça<table><tr style="display: none;"><td></td></tr></table>
Sanu