- 
                    HTML/CSS                    
 - css
 - html
 
【HTML/CSS】display:none;を網羅的に解説(具体的例も)
          「display: none;はどういった場面で使うのだろう。また、diplay: none;について網羅的に知りたい。」と思ったことはありませんか。
今回の記事では、「display: none;」に関する知識をまとめました。
実際に使う場面の例も、挙げたのでそちらもチェックしてみてください。
それではまず、display: none;の基本事項から確認していきましょう。
【HTML/CSS】display: none;とは?

まず、基本事項の確認です。
displayは「表示する」という意味で、noneは「何もない」という意味です。
つまり、CSSのdisplayプロパティをnoneにすると、指定した要素を何もない状態(非表示)にします。
コードは以下のように書きます。
idやclass {
  display: none;
}display: none;を実際に使う場面の例

display: none;を使う場面として以下の2つが挙げられます。
- レスポンシブデザインをつくるとき
 - JavaScriptのイベントなどを使うとき
 
まずは、レスポンシブデザインをつくるときの場面を説明していきます。
レスポンシブデザインをつくるとき
レスポンシブデザインをつくるときに、display: none;を用いて表示の切りかえをすることがあります。
スマホページ(レスポンシブデザイン)のつくりかたに関しては、以下の記事もチェックしてみてください。
それでは、実際にみていきましょう。
例えば下のような、レスポンシブデザインがあったとします。

↓

PC画面ではナビゲーションバーを、スマホ画面ではハンバーガーメニューを表示しています。
つまり、PC画面ではハンバーガーメニューを、スマホ画面ではメニュー項目を消しているということになります。
<nav>
  <ul>
    <li><a href="">HOME</a></li>
    <li><a href="">サービス紹介</a></li>
    <li><a href="">最新情報</a></li>
    <li><a href="">ブログ</a></li>
    <li><a href="">お問い合わせ</a></li>
  </ul>
  <div id="hamburger">
    <img src="hum.png" alt="" />
  </div>
</nav>nav {
  width: 100%;
  height: 70px;
  position: relative;
  background-color: dimgray;
}
nav ul {
  display: flex;
}
nav ul li {
  margin-top: 13px;
  margin-right: 20px;
  list-style: none;
}
nav ul li a {
  text-decoration: none;
  color: white;
}
#hamburger {
  width: 48px;
  height: 45px;
  padding: 5px;
  position: absolute;
  top: 10px;
  right: 16px;
  background-color: lightgray;
  box-sizing: border-box;
}
img {
  width: 30px;
  height: 30px;
  margin-top: 5px;
  margin-left: 3px;
}
@media screen and (max-width: 768px) {
  li {
    display: none;
  }
}
@media screen and (min-width: 769px) {
  #hamburger {
    display: none;
  }
}メディアクエリを「max-width: 768px」に指定したので、画面のヨコ幅が768px以下のときにメニューの名前が見えなくなります。
逆にハンバーガーメニューのボタンは「min-width: 769px」でdisplay: none;としているので、画面のヨコ幅が769px以上のとき表示されません。
このように、レスポンシブデザインをつくるときに使われます。
JavaScriptのイベントなどを使うとき
JavaScriptのイベントの発生時に、display: none;をつかうことがあります。
例えば、ボタンをおしたときに文字が消えるような例を見てみましょう。
クリックされたときの処理をdisplay: none;にします。

<button>ボタン</button>↓↓
<div id="none">消えます</div>#none {
  width: 70px;
  margin-top: 10px;
  background-color: lightgreen;
}const divHide = document.getElementById('none');
const Btn = document.querySelector('button');
divHide.style.display = 'block'; //最初は表示をブロックに
Btn.addEventListener('click', function (event) {
  none.style.display = 'none'; //要素を消す処理
});このボタンをクリックします。

ボタンをクリックすると、文字が消えました。
この場合はクリックイベントでしたが、ほかのイベントについても同じです。
このようにJavaScriptの処理の中で出てくることがあります。
visibility: hidden;との違い

さいごに、visibility: hidden;との違いをみていきます。
「display: none;」に似ているものとして、「visibility: none;」があります(ただし、基本的にはdisplay: none;をよく使用します)。
この2つを使い分けることで、要素の表示のしかたをすこし変えることができます。
結論からいうと、display: none;は「要素ごと存在を消す」、visibility: hidden;は「要素の存在はそのままにして、見た目だけみえないようにする」ものです。
さらにくわしく見ていきましょう。
まず、ことばの意味として、visibilityが「見えること」、hiddenが「隠された」という意味になります。
display: none;は「表示を何もないようにする」という意味であり、visibility: hidden;は、「隠された」という意味のちがいがあります。
実際に使って、display: none;がvisibility: hidden;とどう違うのか検証していきます。
下のようなブロックを用意します。

<div class="block"></div>
<div id="disappear" class="block"></div>
<div class="block"></div>.block {
  width: 100px;
  height: 100px;
  background-color: lightskyblue;
  margin-top: 10px;
}これに、display: none;を適用するコードを書くと下のようになります。

#disappear {
  display: none;
}2つめのブロックに適用させたので、消えているのがわかります。
これに対し、visibility: hidden;を適用するコードを書きます。
#disappear {
  visibility: hidden;
}すると下のようになります。

一つ分のブロックが空いているのが見てとれます。
表示は消えましたが、要素は残っているのがわかります。
display: none;は「要素ごと存在を消す」、visibility: hidden;は「要素の存在はそのままにして、見た目だけみえないようにする」ものということを覚えておきましょう。
まとめ
いかがでしたか?
display: none;の特性についてより理解が深まったのではないでしょうか。
使う場面としては、レスポンシブデザインをつくるとき、JavaSricptなどのイベント発生時に使います。
また、似ているものとしてvisibility: hidden;があるので、両者のちがいを理解しておきましょう。