HTMLでDisplay Noneを完全マスター!実践例10選

HTMLのDisplay Noneを使った実践例HTML
この記事は約29分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

この記事を読めばHTMLのDisplay Noneを完全マスターできます。

初心者でも分かりやすいように、Display Noneの使い方や対処法、注意点、カスタマイズ方法、そして実践的な応用例まで、詳しく解説します。

サンプルコードも豊富に用意しているので、実際に手を動かして学んでいきましょう。

○HTMLでDisplay Noneとは

HTMLでのDisplay Noneは、要素を非表示にするためのCSSプロパティです。

指定された要素は、見た目上だけでなくページのレイアウトからも削除されるため、他の要素に影響を与えません。

この記事では、Display Noneの使い方や対処法、注意点、カスタマイズ方法、そして実践的な応用例まで、詳しく解説していきます。

○Display Noneの使い方 ・基本的な使い方

Display Noneを使って要素を非表示にするには、対象の要素に対して「display: none;」というスタイルを適用します。

これをHTMLのstyle属性や外部CSSファイルに記述することで、要素を非表示にできます。

例えば、下記のようにHTML内のstyle属性で指定することができます。

<p style="display: none;">このテキストは非表示です。</p>

また、下記のように外部CSSファイルで指定することもできます。

/* CSSファイル */
.hidden {
  display: none;
}
<!-- HTMLファイル -->
<p class="hidden">このテキストは非表示です。</p>

○Display Noneの対処法 ・表示/非表示の切り替え

Display Noneを使って要素を非表示にした後、表示させたい場合は、「display: block;」や「display: inline;」など、適切なdisplayプロパティを指定することで切り替えが可能です。

サンプルコード

下記の例では、ボタンをクリックすることで要素の表示/非表示を切り替えています。

<style>
  .hidden {
    display: none;
  }
</style>

<p id="text" class="hidden">このテキストは非表示です。</p>
<button onclick="toggleDisplay()">表示/非表示を切り替える</button>

<script>
  function toggleDisplay() {
    var text = document.getElementById("text");
    if (text.classList.contains("hidden")) {
      text.classList.remove("hidden");
    } else {
      text.classList.add("hidden");
    }
  }
</script>

○Display Noneの注意点 ・SEOへの影響

Display Noneで非表示にした要素は、検索エンジンにも認識されないことがあります。

そのため、重要な情報やキーワードを含む要素を非表示にすることは、SEOに悪影響を与える可能性があります。

アクセシビリティの観点

Display Noneで非表示にした要素は、スクリーンリーダーやキーボードナビゲーションにも影響を与えることがあります。

アクセシビリティを損なわないように、適切な方法で要素を非表示にしましょう。

○Display Noneのカスタマイズ ・スタイルシートでの指定

Display Noneを使う際に、CSSファイルでの指定が一般的です。

これにより、複数の要素に対して同じスタイルを適用したり、スタイルの変更が容易になります。

JavaScriptでの制御

JavaScriptを使ってDisplay Noneを制御することで、動的な表示/非表示の切り替えが可能になります。

例えば、ボタンクリックや特定の条件を満たしたときに要素を非表示にすることができます。

下記の例では、ボタンをクリックすることで要素の表示/非表示を切り替えています。

<style>
  .hidden {
    display: none;
  }
</style>

<p id="text" class="hidden">このテキストは非表示です。</p>
<button onclick="toggleDisplay()">表示/非表示を切り替える</button>

<script>
  function toggleDisplay() {
    var text = document.getElementById("text");
    if (text.classList.contains("hidden")) {
      text.classList.remove("hidden");
    } else {
      text.classList.add("hidden");
    }
  }
</script>

○実践的な応用例8選

このセクションでは、Display Noneを応用した8個の実践的な例を紹介しますそれぞれの例にはサンプルコードも付属しているので、ぜひ参考にしてください。

●例1:ドロップダウンメニュー

ドロップダウンメニューは、マウスオーバーやクリックで表示される子要素を持つメニューです。

Display Noneを使って、子要素を非表示にしておき、表示イベント時に表示させることができます。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>ドロップダウンメニュー</title>
  <style>
    .dropdown {
      display: inline-block;
      position: relative;
    }

    .dropdown-content {
      display: none;
      position: absolute;
      background-color: #f9f9f9;
      min-width: 160px;
      box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2);
      z-index: 1;
    }

    .dropdown-content a {
      color: black;
      padding: 12px 16px;
      text-decoration: none;
      display: block;
    }

    .dropdown-content a:hover {
      background-color: #f1f1f1;
    }

    .dropdown:hover .dropdown-content {
      display: block;
    }
  </style>
</head>
<body>
  <div class="dropdown">
    <button>メニュー</button>
    <div class="dropdown-content">
      <a href="#">リンク1</a>
      <a href="#">リンク2</a>
      <a href="#">リンク3</a>
    </div>
  </div>
</body>
</html>

●例2:アコーディオンパネル

アコーディオンパネルは、クリックでコンテンツを展開・折りたたむことができるUIです。

Display Noneを使って、非表示にしたコンテンツを表示させることができます。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>アコーディオンパネル</title>
  <style>
    .accordion {
      cursor: pointer;
      width: 100%;
      text-align: left;
      outline: none;
      border: none;
      background-color: #eee;
      padding: 10px;
      margin-bottom: 10px;
    }

    .panel {
      display: none;
      padding: 0 10px;
      margin-bottom: 10px;
      background-color: white;
      overflow: hidden;
    }
  </style>
</head>
<body>
  <button class="accordion">セクション1</button>
  <div class="panel">
    <p>セクション1のコンテンツ</p>
  </div>

  <button class="accordion">セクション2</button>
  <div class="panel">
    <p>セクション2のコンテンツ</p>
  </div>

  <button class="accordion">セクション3</button>
  <div class="panel">
    <p>セクション3のコンテンツ</p>
  </div>

  <script>
    var acc = document.getElementsByClassName("accordion");
    var i;

    for (i = 0; i < acc.length; i++) {
      acc[i].addEventListener("click", function() {
        this.classList.toggle("active");
        var panel = this.nextElementSibling;
        if (panel.style.display === "block") {
          panel.style.display = "none";
        } else {
          panel.style.display = "block";
        }
      });
    }
  </script>
</body>
</html>

●例3:モーダルウィンドウ

モーダルウィンドウは、親ウィンドウとは独立した小さなウィンドウで、ポップアップ表示されるコンテンツです。

Display Noneを使って、非表示にしておいたモーダルウィンドウを表示させることができます。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>モーダルウィンドウ</title>
  <style>
    .modal {
      display: none;
      position: fixed;
      z-index: 1;
      left: 0;
      top: 0;
      width: 100%;
      height: 100%;
      overflow: auto;
      background-color: rgba(0, 0, 0, 0.4);
    }

    .modal-content {
      background-color: #fefefe;
      margin: 15% auto;
      padding: 20px;
      border: 1px solid #888;
      width: 80%;
    }

    .close {
      color: #aaa;
      float: right;
      font-size: 28px;
      font-weight: bold;
    }

    .close:hover,
    .close:focus {
      color: black;
      text-decoration: none;
      cursor: pointer;
    }
  </style>
</head>
<body>

  <h2>モーダルウィンドウのデモ</h2>

  <button id="modalBtn">モーダルを開く</button>

  <div id="myModal" class="modal">
    <div class="modal-content">
      <span class="close">&times;</span>
      <p>モーダルウィンドウのコンテンツです。</p>
    </div>
  </div>

  <script>
    var modal = document.getElementById("myModal");
    var btn = document.getElementById("modalBtn");
    var span = document.getElementsByClassName("close")[0];

    btn.onclick = function() {
      modal.style.display = "block";
    }

    span.onclick = function() {
      modal.style.display = "none";
    }

    window.onclick = function(event) {
      if (event.target == modal) {
        modal.style.display = "none";
      }
    }
  </script>

</body>
</html>

●例4:タブ付きコンテンツ

タブ付きコンテンツは、複数のコンテンツをタブで切り替えて表示させるUIです。

Display Noneを使って、非表示にしたコンテンツを選択したタブに応じて表示させることができます。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>タブ付きコンテンツ</title>
  <style>
    .tab {
      overflow: hidden;
      border-bottom: 1px solid #ccc;
    }

    .tab button {
      background-color: inherit;
      border: none;
      outline: none;
      cursor: pointer;
      padding: 14px 16px;
      transition: 0.3s;
      font-size: 17px;
    }

    .tab button:hover {
      background-color: #ddd;
    }

    .tab button.active {
      background-color: #ccc;
    }

    .tabcontent {
      display: none;
      padding: 6px 12px;
      border: 1px solid #ccc;
      border-top: none;
    }
  </style>
</head>
<body>

  <div class="tab">
    <button class="tablinks" onclick="openCity(event, 'Tab1')">タブ1</button>
    <button class="tablinks" onclick="openCity(event, 'Tab2')">タブ2</button>
    <button class="tablinks" onclick="openCity(event, 'Tab3')">タブ3</button>
  </div>

  <div id="Tab1" class="tabcontent">
    <h3>タブ1</h3>
    <p>タブ1のコンテンツです。</p>
  </div>

  <div id="Tab2" class="tabcontent">
    <h3>タブ2</h3>
    <p>タブ2のコンテンツです。</p>
  </div>

  <div id="Tab3" class="tabcontent">
    <h3>タブ3</h3>
    <p>タブ3のコンテンツです。</p>
  </div>

  <script>
    function openCity(evt, cityName) {
      var i, tabcontent, tablinks;
      tabcontent = document.getElementsByClassName("tabcontent");
      for (i = 0; i < tabcontent.length; i++) {
        tabcontent[i].style.display = "none";
      }
      tablinks = document.getElementsByClassName("tablinks");
      for (i = 0; i < tablinks.length; i++) {
        tablinks[i].className = tablinks[i].className.replace(" active", "");
      }
      document.getElementById(cityName).style.display = "block";
      evt.currentTarget.className += " active";
    }
  </script>

</body>
</html>

●例5:レスポンシブナビゲーションバー

レスポンシブデザインのナビゲーションバーは、画面サイズに応じて表示を切り替えることができます。

Display Noneを使って、非表示にしたコンテンツを画面サイズに応じて表示させることができます。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>レスポンシブナビゲーションバー</title>
  <style>
    body {
      margin: 0;
      font-family: Arial, Helvetica, sans-serif;
    }

    .topnav {
      overflow: hidden;
      background-color: #333;
    }

    .topnav a {
      float: left;
      display: block;
      color: #f2f2f2;
      text-align: center;
      padding: 14px 16px;
      text-decoration: none;
      font-size: 17px;
    }

    .topnav a:hover {
      background-color: #ddd;
      color: black;
    }

    .topnav a.active {
      background-color: #4CAF50;
      color: white;
    }

    .topnav .icon {
      display: none;
    }

    @media screen and (max-width: 600px) {
      .topnav a:not(:first-child) {display: none;}
      .topnav a.icon {
        float: right;
        display: block;
      }
    }

    @media screen and (max-width: 600px) {
      .topnav.responsive {position: relative;}
      .topnav.responsive .icon {
        position: absolute;
        right: 0;
        top: 0;
      }
      .topnav.responsive a {
        float: none;
        display: block;
        text-align: left;
      }
    }
  </style>
</head>
<body>

  <div class="topnav" id="myTopnav">
    <a href="#home" class="active">ホーム</a>
    <a href="#news">ニュース</a>
    <a href="#contact">お問い合わせ</a>
    <a href="#about">アバウト</a>
    <a href="javascript:void(0);" class="icon" onclick="myFunction()">
      <i class="fa fa-bars"></i>
    </a>
  </div>

  <script>
    function myFunction() {
      var x = document.getElementById("myTopnav");
      if (x.className === "topnav") {
        x.className += " responsive";
      } else {
        x.className = "topnav";
      }
    }
  </script>

</body>
</html>

●例6:アコーディオンメニュー

アコーディオンメニューは、クリックすると項目が展開し、別の項目をクリックすると先ほどの項目が閉じるようなメニューです。

Display Noneを使って、非表示にしておいたコンテンツを表示させることができます。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>アコーディオンメニュー</title>
  <style>
    .accordion {
      background-color: #eee;
      color: #444;
      cursor: pointer;
      padding: 18px;
      width: 100%;
      border: none;
      text-align: left;
      outline: none;
      font-size: 15px;
      transition: 0.4s;
    }

    .active, .accordion:hover {
      background-color: #ccc;
    }

    .panel {
      padding: 0 18px;
      display: none;
      background-color: white;
      overflow: hidden;
    }
  </style>
</head>
<body>

  <h2>アコーディオンメニュー</h2>

  <button class="accordion">セクション1</button>
  <div class="panel">
    <p>セクション1のコンテンツです。</p>
  </div>

  <button class="accordion">セクション2</button>
  <div class="panel">
    <p>セクション2のコンテンツです。</p>
  </div>

  <button class="accordion">セクション3</button>
  <div class="panel">
    <p>セクション3のコンテンツです。</p>
  </div>

  <script>
    var acc = document.getElementsByClassName("accordion");
    var i;

    for (i = 0; i < acc.length; i++) {
      acc[i].addEventListener("click", function() {
        this.classList.toggle("active");
        var panel = this.nextElementSibling;
        if (panel.style.display === "block") {
          panel.style.display = "none";
        } else {
          panel.style.display = "block";
        }
      });
    }
  </script>

</body>
</html>

●例7:ドロップダウンメニュー

ドロップダウンメニューは、親要素にマウスをホバーすると子要素が表示されるメニューです。

Display Noneを使って、非表示にしておいた子要素を表示させることができます。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>ドロップダウンメニュー</title>
  <style>
    ul {
      list-style-type: none;
      margin: 0;
      padding: 0;
      overflow: hidden;
      background-color: #333;
      position: relative;
    }

    li {
      float: left;
    }

    li a {
      display: block;
      color: white;
      text-align: center;
      padding: 14px 16px;
      text-decoration: none;
    }

    li a:hover:not(.active) {
      background-color: #111;
    }

    .dropdown-content {
      display: none;
      position: absolute;
      background-color: #f9f9f9;
      min-width: 160px;
      box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
      z-index: 1;
    }

    .dropdown-content a {
      color: black;
      padding: 12px 16px;
      text-decoration: none;
      display: block;
      text-align: left;
    }

    .dropdown-content a:hover {
      background-color: #f1f1f1;
    }

    .dropdown:hover .dropdown-content {
      display: block;
    }
  </style>
</head>
<body>

  <ul>
    <li><a href="#home">ホーム</a></li>
    <li><a href="#news">ニュース</a></li>
    <li class="dropdown">
      <a href="javascript:void(0)" class="dropbtn">ドロップダウン</a>
      <div class="dropdown-content">
        <a href="#">リンク1</a>
        <a href="#">リンク2</a>
        <a href="#">リンク3</a>
      </div>
    </li>
  </ul>

</body>
</html>

●例8:スライドショー

スライドショーは、画像が順番に切り替わるアニメーションです。

Display Noneを使って、非表示にしておいた画像を表示させることができます。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>スライドショー</title>
  <style>
    .slideshow-container {
      max-width: 1000px;
      position: relative;
      margin: auto;
    }

    .slide {
      display: none;
      width: 100%;
      height: 400px;
      background-repeat: no-repeat;
      background-position: center;
      background-size: cover;
    }

    .slide:nth-child(1) {
      background-image: url('img1.jpg');
    }

    .slide:nth-child(2) {
      background-image: url('img2.jpg');
    }

    .slide:nth-child(3) {
      background-image: url('img3.jpg');
    }

    .active {
      display: block;
    }
  </style>
</head>
<body>

  <h2>スライドショー</h2>
  <div class="slideshow-container">
    <div class="slide"></div>
    <div class="slide"></div>
    <div class="slide"></div>
  </div>

  <script>
    let slideIndex = 0;
    showSlides();

    function showSlides() {
      let i;
      let slides = document.getElementsByClassName("slide");

      for (i = 0; i < slides.length; i++) {
        slides[i].style.display = "none";
      }

      slideIndex++;
      if (slideIndex > slides.length) { slideIndex = 1 }
      slides[slideIndex - 1].style.display = "block";
      setTimeout(showSlides, 3000); // 3秒ごとに画像を切り替え
    }
  </script>

</body>
</html>

画像ファイル名(img1.jpg、img2.jpg、img3.jpg)は適切なものに変更して使用してください。

まとめ

この記事では、HTMLでDisplay Noneを使いこなすための初心者向けガイドを提供しました。

使い方や対処法、注意点、カスタマイズ方法、そして実践的な応用例まで、詳しく解説しました。

ぜひ、この記事を参考にしてDisplay Noneを活用し、より効果的なウェブページを作成してください。