css ドロップダウンメニュー レスポンシブ

CSS: レスポンシブナビゲーションメニュー

この記事では、HTMLとCSSを使用してシンプルなレスポンシブナビゲーションメニューを作成する方法を紹介します。このメニューは、デスクトップでは水平ナビゲーションバーとして表示され、モバイルではドロップダウンメニューに変換されます。メディアクエリを使用して、異なる画面サイズに合わせて調整します。

HTML構造

まず、HTMLでナビゲーションメニューの基本構造を作成します。

  • 順序なしリスト <ul> を使用して、ナビゲーションメニューの基本構造を作成します。
  • リスト項目 <li> を使用して各メニュー項目を囲み、リンク <a> を使用してクリック可能なメニュー項目を作成します。
  • ドロップダウンメニュー項目には、ネストされた <ul> リストを追加して、2次メニューを作成します。

<nav>
  <ul>
    <li><a href="#">ホーム</a></li>
    <li>
      <a href="#">サービス</a>
      <ul>
        <li><a href="#">サービス1</a></li>
        <li><a href="#">サービス2</a></li>
      </ul>
    </li>
    <li><a href="#">ブログ</a></li>
    <li><a href="#">お問い合わせ</a></li>
  </ul>
</nav>

CSSスタイル

次に、CSSを使用してナビゲーションメニューのスタイルを設定します。

基本スタイル

まず、リストのデフォルトスタイルを削除し、ナビゲーションバーの背景色、幅、フォントなどを設定します。メニュー項目を水平に配置し、間隔とホバー効果を設定します。


nav {
  background-color: #333;
  width: 100%;
}

nav ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

nav li {
  display: inline-block;
  position: relative;
}

nav a {
  display: block;
  padding: 15px 20px;
  color: #fff;
  text-decoration: none;
}

nav a:hover {
  background-color: #555;
}

ドロップダウンメニューのスタイル

次に、ドロップダウンメニューのスタイルを設定します。初期状態では非表示にし、ホバー時に表示されるようにします。ドロップダウンメニューの位置、背景色、幅などを設定します。


nav ul ul {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  background-color: #333;
}

nav li:hover > ul {
  display: block;
}

nav ul ul li {
  display: block;
  width: 150px;
}

レスポンシブデザイン

最後に、メディアクエリを使用して、異なる画面サイズに合わせてナビゲーションメニューのスタイルを調整します。小画面では、水平ナビゲーションバーを非表示にし、ドロップダウンメニューボタンを表示します。ボタンをクリックすると、JavaScriptを使用してドロップダウンメニューの表示と非表示を切り替えます。


@media screen and (max-width: 768px) {
  nav ul {
    display: none;
  }

  nav .menu-toggle {
    display: block;
    padding: 15px 20px;
    color: #fff;
    text-decoration: none;
    cursor: pointer;
  }

  nav .menu-toggle:before {
    content: "\f0c9";
    font-family: FontAwesome;
    margin-right: 5px;
  }

  nav.active ul {
    display: block;
  }
}

const menuToggle = document.querySelector('.menu-toggle');
const nav = document.querySelector('nav');

menuToggle.addEventListener('click', () => {
  nav.classList.toggle('active');
});

コード例

以下は、完全なHTMLとCSSのコード例です。コピーして変更することができます。


<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>レスポンシブナビゲーションメニュー</title>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css">
  <style>
    /* 上記のCSSコード */
  </style>
</head>
<body>

  <nav>
    <a href="#" class="menu-toggle"></a>
    <ul>
      <li><a href="#">ホーム</a></li>
      <li>
        <a href="#">サービス</a>
        <ul>
          <li><a href="#">サービス1</a></li>
          <li><a href="#">サービス2</a></li>
        </ul>
      </li>
      <li><a href="#">ブログ</a></li>
      <li><a href="#">お問い合わせ</a></li>
    </ul>
  </nav>

  <script>
    // 上記のJavaScriptコード
  </script>
</body>
</html>

まとめ

この記事では、シンプルで理解しやすいレスポンシブドロップダウンメニューの実装方法を紹介しました。コードの意味と役割を詳しく説明しているので、初心者の学習や参考資料として最適です。

よくある質問

1. ドロップダウンメニューの幅を調整するにはどうすればよいですか?

CSSで nav ul ul liwidth プロパティを変更することで、ドロップダウンメニューの幅を調整できます。

2. ドロップダウンメニューの色を変更するにはどうすればよいですか?

CSSで nav ul ulbackground-color プロパティを変更することで、ドロップダウンメニューの背景色を変更できます。

3. ドロップダウンメニューのアニメーションを追加するにはどうすればよいですか?

CSSで transition プロパティを使用することで、ドロップダウンメニューにアニメーションを追加できます。

その他の参考記事:CSSドロップダウンメニュー