jQueryで作るアコーディオン

jQueryで作るアコーディオン HTML・CSS・JS

jQueryで作るシンプルで簡単なアコーディオンを紹介します。

開閉式のメニューなど、何かと使用する機会も多いです。

シンプル版

JS

$(function(){
  $('.accordion').click(function(){
    $(this).next().slideToggle();
  });
});

たったこれだけです。
slideToggleメソッドを利用して、.accordionクラスをクリックした際に、隣接する次の要素が開閉する仕組みとなっています。

html

<dl>
  <dt class="accordion">アコーディオンタイトル</dt>
  <dd class="accordion-contents">アコーディオン内コンテンツ</dd>
</dl>

ここでは<dl>タグを使用しましたが、.accordionクラスを見出しのhタグに付与して、.accordion-contentsをpタグに付与等の使い方でもよさそうです。

CSS

.accordion {
  padding: 10px;
  background: #f7ecf1;
  font-weight: bold;
}

.accordion-contents {
  padding: 10px;
  display: none;
}

アコーディオン内のコンテンツ部分は、最初は閉じた状態にしておきたいので、display: none;を指定しています。
他の部分は見た目の調整なので、自由にカスタマイズしてみてください。

サンプル

アコーディオンタイトル クリックで開閉
アコーディオン内コンテンツ

連続クリック対策

上のシンプル版でも十分に実用できますが、アコーディオンの開閉中に連続でクリック(タップ)した場合、クリックした回数分きっちりと開閉してしまいます。
実際はそこまで高速かつ連続でクリックするユーザーはいないとは思いますが、高速かつ連続でクリックされた場合、アコーディオンの開閉アニメーションが連続で何回も繰り返されてしますので、念の為対策しておいてもよいでしょう。

JS

$(function(){
  $('.accordion').click(function(){
    $(this).next().stop().slideToggle();
  });
});

slideToggleメソッドの前にstopメソッドを入れることで、現在動作中のアニメーション処理が全て中止されます。
これにより、連続でクリックされた際にアコーディオンの開閉アニメーションが連続で何回も繰り返されるのを防ぐことができます。

サンプル

アコーディオンタイトル クリックで開閉
アコーディオン内コンテンツ

まとめ

いかがでしたでしょうか。

タイトル部分に画像を使用したり、複数連続で表示することでアコーディオンメニューにしたりすることもできます。
アコーディオンはWeb制作の現場でもよく使うテクニックなので、覚えておくと幅が広がるかもしれません。

タイトルとURLをコピーしました