【CSS】display:none と visibility:hiddenの違い

CSS

display:noneとvisiblity:hiddenはどちらも要素を非表示にする時に指定しますが、display:noneは要素を「非表示にする」だけでなく、その要素自体がレイアウト計算から完全に除外されます。で、visibility:hiddenは要素を「非表示」にするものの、レイアウトのスペースは維持されます。

display:none と visibility:hiddenの違い

セル1セル4

上のサンプルで動作を確認してもらうとわかるかと思いますが、セル2はvisibility:hidden;で要素を非表示にし、セル3はdisplay:none;で非表示にしています。表でまとめると…

プロパティ効果要素の表示状態レイアウトへの
影響
display: none;要素の非表示。要素をレイアウトごと非表示。要素が削除されるため、その周りの要素が詰めて表示される。<div style="display:none;">非表示</div>
display: block;要素の表示。要素をレイアウトごと表示。新しい行に表示され、上部や下部にマージンが追加されることがある。<div style="display:block;">表示</div>
visibility: hidden;要素の非表示。要素は非表示だが、レイアウト内にはそのスペースが残る。要素が視覚的に非表示でも、スペースは占有され、周囲の要素はその位置に影響される。<div style="visibility:hidden;">非表示</div>

visibility: visible;
要素の表示。表示。要素は表示されるが、その周りの要素は動かず、レイアウトには影響なし。<div style="visibility:visible;">表示</div>

まとめ

要素を完全に除外したい場合はdisplay:none;を使用し、レイアウトのスペースを維持したい場合はvisibility:hidden;を使用します。

コメント

タイトルとURLをコピーしました