jQuery クリック メニュー

jQuery クリック メニュー: アコーディオンメニューの実装方法を徹底解説!

jQueryを使って、クリックするだけでコンテンツを展開・折りたたみできる、スタイリッシュなアコーディオンメニューを簡単に実装する方法を解説します。初心者の方でも分かりやすいように、コード例を交えて丁寧に説明していきます。

1. アコーディオンメニューとは?

  • アコーディオンのように開いたり閉じたりできるメニューのこと
  • 省スペースで多くの情報を整理して表示できる
  • ユーザー体験を向上させる効果も期待できる

2. jQueryを使ったアコーディオンメニューの実装方法

ここでは、シンプルなアコーディオンメニューを実装するための基本的な手順とコード例をご紹介します。

2.1. HTMLの記述

まずは、アコーディオンメニューのHTML構造を作成します。見出しとなる要素と、その下に展開するコンテンツをそれぞれ

要素で囲み、適切なクラス名を付与します。


<div class="accordion">
  <div class="accordion-item">
    <h3 class="accordion-title">見出し1</h3>
    <div class="accordion-content">
      <p>コンテンツ1の内容が表示されます。</p>
    </div>
  </div>
  <div class="accordion-item">
    <h3 class="accordion-title">見出し2</h3>
    <div class="accordion-content">
      <p>コンテンツ2の内容が表示されます。</p>
    </div>
  </div>
  <!-- 必要なだけ項目を追加 -->
</div>

2.2. CSSの記述

次に、CSSを使ってアコーディオンメニューの外観をデザインします。見出しのデザインや、コンテンツを非表示にするためのスタイルなどを定義します。


.accordion-item {
  border-bottom: 1px solid #ccc;
}

.accordion-title {
  background-color: #eee;
  padding: 10px;
  cursor: pointer;
}

.accordion-content {
  display: none; /* 初期状態では非表示 */
  padding: 10px;
}

2.3. jQueryの記述

最後に、jQueryを使ってクリックイベントを設定し、アコーディオンメニューの動作を実装します。見出しがクリックされたら、対応するコンテンツを展開・折りたたむようにします。


$(function() {
  $('.accordion-title').on('click', function() {
    $(this).next('.accordion-content').slideToggle();
  });
});

3. 様々な機能を追加して、さらに使いやすく!

基本的なアコーディオンメニューの実装ができたので、さらに使いやすくするための機能追加について解説します。

3.1. 開いた時に他のメニューは自動的に閉じる機能

複数のメニューを開いたままにするのではなく、新たに開いたメニューをクリックした際に、他の開いているメニューは自動的に閉じるように設定してみましょう。


$(function() {
  $('.accordion-title').on('click', function() {
    // 他の開いているコンテンツを閉じる
    $('.accordion-content').not($(this).next()).slideUp();
    // クリックした見出しのコンテンツを開閉
    $(this).next('.accordion-content').slideToggle();
  });
});

3.2. スムーズなアニメーション効果

コンテンツの展開・折りたたみにアニメーション効果を追加することで、よりスムーズな動きを実現できます。jQueryのanimate()メソッドなどを活用して、動きをカスタマイズしてみましょう。


$(function() {
  $('.accordion-title').on('click', function() {
    // 他の開いているコンテンツを閉じる (アニメーション付き)
    $('.accordion-content').not($(this).next()).slideUp(300);
    // クリックした見出しのコンテンツを開閉 (アニメーション付き)
    $(this).next('.accordion-content').slideToggle(300);
  });
});

3.3. 開いた状態を保持する機能

ページをリロードしても、最後に開いていたメニューの状態を保持したい場合は、CookieやlocalStorageなどを活用する方法があります。

4. まとめ

jQueryを使えば、簡単にアコーディオンメニューを実装できます。 本記事を参考に、ぜひ自分のウェブサイトにも実装してみましょう!

参考文献

Q&A

質問 回答
アコーディオンメニューのコンテンツを初期状態で開いたままにするにはどうすればよいですか? CSSで.accordion-contentdisplayプロパティをblockに設定するか、JavaScriptでページ読み込み時に特定のコンテンツを開く処理を追加します。
アコーディオンメニューのアニメーション速度を調整するにはどうすればよいですか? jQueryのslideToggle()メソッドなどに渡す引数を変更することで、アニメーション速度を調整できます。ミリ秒単位で指定します。
アコーディオンメニューのデザインを変更するにはどうすればよいですか? CSSで.accordion.accordion-title.accordion-contentなどのクラスに対して、好みのスタイルを適用することでデザインを変更できます。

その他の参考記事:jquery dropdownplain