違いは何であるvisibility:collapse
とはdisplay:none
?
回答:
短縮版:
前者は、テーブル要素を完全に非表示にするために使用されます。後者は、他のすべてを完全に隠すために使用されます。
ロングバージョン:
visibility: collapse
要素を完全に非表示にします(レイアウト内のスペースを占有しないようにします)が、要素がテーブル要素の場合のみです。
テーブル要素以外の要素で使用visibility: collapse
すると、のように動作しvisibility: hidden
ます。これにより要素は非表示になりますが、それでもレイアウト内のスペースを占有します。
display: none
要素を完全に非表示にするため、レイアウト内のスペースを占有しませんが、テーブル要素には使用しないでください。
display: none;
は、とを使用colspan
してテーブルを壊すためrowspan
です。
visibility: collapse
visibility: hidden
ほとんどのフォーマットコンテキストとまったく同じように動作します。要素に必要なスペースはレイアウトで「予約」されますが、要素自体はレンダリングされず、本来の場所に空白スペースが残ります。
私が知っている3つの例外があります。テーブル行、テーブル列、フレックスアイテムです。これらvisibility: collapse
はのようdisplay: none
に動作しますが、大きな違いが1つあります。「ストラット」です。支柱はゼロサイズのプレースホルダーと考えることができます。これは、レイアウトプロセスで独自のスペースを要求しませんが、それでもフォーマット構造の一部であり、一部のサイズ計算に参加します。
たとえば、折りたたまれたテーブル行はテーブル内の垂直方向のスペースを占有しませんが、テーブルの列は、折りたたまれた行とその内容が実際に表示されているかのように「あたかも」ディメンション化されます。これは、行が切り替えられるときに列が「ぐらつく」のを防ぐためです。同様に、折りたたまれたフレックスアイテムは、主軸に沿ったスペースを占有しませんが、それでもフレックスラインのクロスサイズに寄与します。
「display: none
テーブルと一緒に使用しない」は貴重な経験則ですが、全体像を伝えるものではありません。
display: none
非表示の要素をテーブル(またはフレックスライン)のレイアウトプロセスに参加させたくない場合に使用します。visibility: collapse
テーブル(またはフレックスライン)のレイアウトを不安定にすることなく要素を動的に表示および非表示にする場合に使用します。これは、テーブル行display: none
との違いを示すコードスニペットvisibility: collapse
です。
visibility:collapse
Safariのテーブルでは機能しません。私が見つかりましたdisplay:none
(Safariで含む)テーブルの行の作業微細にあるが正しい幅カラムに関する上記のコメント
visibility:collapse
テーブルでのみ使用する必要があります。他の要素では、として機能しますvisibility:hidden
。
visibility:hidden
要素を非表示にしますが、要素のスペースを取りますが、スペースはdisplay:none
保持しません。
リソース:
同じトピックについて:
display: none
テーブル要素で使用してはならないクレームの引用または説明は、すばらしい追加です。