CSSの「非表示」指定、どっちを使う? display: none; と visibility: hidden; の違い

display:nonevisibility: hidden両方HTMLから要素を非表示にしてくれます。

しかし、こちらをきちんと意味を理解して使い分けられているでしょうか?

こちらをきちんと理解して活用しないと実務で思わぬ不具合が生じる可能性があります

display: none;とvisibility: hidden; の違いをまとめると以下になります。

両者の違い
display: none;
  • HTML上で完全に見えなくなる
visibility: hidden;
  • 要素の幅を保ったままHTML上で見えなくなる

以上になります。

ここからは具体的にどのようにこの2つを使い分けるかについて解説していきます。

目次

display: none;を活用する場面

display:none;を活用する場面は、要素の幅が画面上に残られると困る場面です。

例えば、モーダルウインドウやポップアップを作りたい時はdisplay: none;を活用します。

これらをvisibility: hidden;で設定してしまうと、ユーザーが本来クリックしたい場所と要素が重なり、クリックしたい所がクリックできないなどの不具合が生じます。

visibility: hidden; を活用する場面

visibility: hidden; を活用する場面は、要素の幅を画面上に残しておきたい場面です。

例えば、アコーディオンやスライドメニューを作りたい時はvisibility: hidden;を活用します。

ここでdisplay:none;を使ってしまうと、クリックした瞬間メニューが出現するという、デザイン的にあまりよくないコードになってしまいます。

要素をDOMからも完全に削除したい時

実はこれらのプロパティ両方とも画面から消えたとしても完全にDOMから消えてはいません

もし完全にDOMから削除したい時はJavascriptのremove()を使います

const object = document.querySelector(".object");
//要素を完全にDOMから削除
object.remove();

これでOKです。

まとめ

display: none;visibility: hidden;は同じように見えて実は違う挙動をします。

また、完全に要素から削除したい時は、Javascriptのremove()を使えばDOMからも完全に削除出来ます。

ぜひこれらを使い分けてWEB制作者としてのスキルを高めてください。

  • URLをコピーしました!

マサのアバター マサ WordPressエンジニア

京都市在住のマサです。
フリーランスWeb制作者として活動しています。
コーディングがメインです。 
JavaScriptが大好き!
フリーランスWeb制作者を目指してる方に向けて情報発信
趣味:Netflix・英語学習

目次