HTMLテーブルの行<tr>を非表示にして、スペースを取らないようにするにはどうすればよいですか?


105

HTMLテーブルの行を非表示にして、<tr>スペースを取らないようにするにはどうすればよいですか?にいくつか<tr>のを設定しstyle="display:none;"ていますが、それでもテーブルのサイズに影響し、テーブルの境界線は非表示の行を反映しています。


2
それらは繰り返し表示/非表示されていますか?または、それらが非表示になっている場合、効果的に永久に消えてしまうのでしょうか?JavaScriptを使用して行を削除するだけで問題が解決する可能性があるためです。
brettkelly 2009

私はそれらを非表示として開始し、ユーザーが「もっと見る」ボタンをクリックした場合に表示したいです。彼らが隠されているとき、私は彼らに縦のスペースをとってほしくない。
MikeN 2009

私はこれと同じ問題を抱えていましたが、JavaScriptで行を削除()すると、IE6で一部のスペースを占有します。
sucky

1
どのdoctypeを使用していますか?私があなたが良い担当者と一緒にSOに投稿しているという単純な事実は、おそらく奇妙なモードを回避するのに十分知っていることを示しています...しかし、唯一の愚かな質問は、尋ねられないものです。...そして、セキセイインコに関するもの、明らかに。
デビッドはモニカを

1
私はFF 3.5とIE8でテストしました-どちらもdisplay:noneで行を非表示にします
17 of 26

回答:


37

TABLEのスタイリングを是非ご覧になってください。例:「ボーダーコラプス」

単なる推測ですが、「非表示」の行がどのようにレンダリングされるかに影響を与える可能性があります。


2
ありがとう!それは欠けていたスタイルでした。
MikeN 2009

100

いくつかのコードを含めることはできますか?style="display:none;"常にテーブルの行に追加すると、行全体が効果的に非表示になります。


私のために働いた。私は可視性を設定しようとしていました:前に非表示:(
Toadums

まだスペースがあります:/
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

4
ありがとうございました!!隠すことは簡単でしたが、それらを戻すことは問題があることが判明しました。
Jefferey Cave 2016

これはテーブルの幅を変更します。検索ボックス内の内容に基づいて行を非表示にする必要があるフィルターを実行しています
PirateApp

13

これに潜在的な他の解決策を追加すると思いました:

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

私はそれをChromeでテストしただけですが、これを<tr>非表示にすると行が非表示になり、行内のすべてのセルは列の幅に寄与します。テーブルの下部に、特定の列が特定の幅よりも小さくならないようにするためのスペーサーをいくつか追加して行を追加し、このメソッドを使用して行を非表示にする場合があります。(私はあなたが他のCSSでこれを行うことができるはずだと知っていますが、私はそれを動作させることができませんでした)

繰り返しますが、私は純粋なクロム環境にいるので、他のブラウザでこれがどのように機能するのかわかりません。


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は、overflow:hiddenでした。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に残りますが、他の要素には影響しません。


fwiwこれは、特定の状況で列を非表示にする場合に最適なソリューションだと思います。さらに追加opacity: 0
Grapho

-5

設定できます

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

5
visibility: hidden;間の差だ、まだスペースを取る要素、visibilityおよびdisplayプロパティは
ドミトリーPashkevich

このように使用する<table><tr style="display: none;"><td></td></tr></table>
Sanu
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.