JavaScript(jQuery)のslideToggleでアコーディオンメニューを作ろう!

JavaScript(jQuery)のslideToggleでアコーディオンメニューを作ろう!JavaScript

jQueryとは?

jQueryとは「JavaScriptのライブラリ」で、処理を簡単にしたり、Javascriptでは困難だったブラウザの互換性に対応するなど、jQueryが使われるようになったことで、Web制作がよりやりやすく効率化されました。

jQueryの基礎知識について知りたい方は、下記のリンクをクリックしてください!

jQueryとは?導入方法・サンプルコード・基礎構文までを解説!

jQueryを使用するには?

<script type="text/javascript" src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

公式サイトからダウンロード

Download jQuery | jQuery
jQuery: The Write Less, Do More, JavaScript Library

上記のサイトにある

Download the compressed, production jQuery 3.6.0

をクリックしてダウンロードしてください。

※バージョンの更新により、3.6.0ではない可能性があります。

jQueryのslideToggleメソッドについて

slideToggleメソッドとは、jQuery専用のメソッドで、下記のサンプルのようなにゅるっとした開閉ボタンを作るのに適しています。

このメソッドは以前まではなかったのですが、これの登場によりアコーディオンメニューの実装がとても楽になりました。

要は、slideToggle()と指定するだけでにゅるっとした動作になります。

また、slideToggle(200)と指定すると、0.2秒の速さで開閉するという速度指定も可能です。

さらに、第2引数に関数を設定することで、slideToggleが実行された後に関数を実行することも可能です。

例:slideToggle(200, test_function);

slideToggleでアコーディオンを実装したサンプル

アコーディオンメニュー1
アコーディオンメニュー中身
アコーディオンメニュー2
アコーディオンメニュー中身
アコーディオンメニュー3
アコーディオンメニュー中身

slideToggleを使用してアコーディオンメニューを作成

それでは、先ほど登場したサンプルを作ってみたいと思います。

コードを全てコピペすれば実装できますので、お急ぎの方はサンプルコードをコピペしてください。

ちなみに、最初に紹介した通りjQuery本体を読み込まないと使用できませんのでご注意ください。

アコーディオンメニュー1
アコーディオンメニュー中身
アコーディオンメニュー2
アコーディオンメニュー中身
アコーディオンメニュー3
アコーディオンメニュー中身

HTMLのサンプルコード

<dl id="ac_menu">
<dt>アコーディオンメニュー1</dt>
<dd>アコーディオンメニュー中身</dd>
<dt>アコーディオンメニュー2</dt>
<dd>アコーディオンメニュー中身</dd>
<dt>アコーディオンメニュー3</dt>
<dd>アコーディオンメニュー中身</dd>
</dl>

CSSのサンプルコード

#ac_menu dt {
display: block;
width: 200px;
padding: 1.5rem;
box-sizing: border-box;
line-height: 2;
text-align: center;
background: #666;
color: #fff;
cursor: pointer;
border: #fff solid 1px;
}

#ac_menu dd {
background: #eee;
width: 200px;
padding: 1.5rem;
box-sizing: border-box;
line-height: 2;
text-align: center;
display: none;
margin: 0;
}

jQueryのサンプルコード

<script>
$(function(){
$("#ac_menu dt").on("click", function() {
$(this).next().slideToggle();
});
});
</script>

アコーディオンメニューの解説

今回のアコーディオンメニューの作り方は、dtをクリックしたらddが出てくるという仕組みにするので、まずcssでddをdisplay: none;にします。

あとは、下記のようにjQueryを記述します。

下記のコードは、#ac_menuのdtをクリックしたとき、関数を実行する

実行内容は、クリックした要素の次の要素をにゅるっと表示させる。

といった感じに翻訳できます。

<script>
$(function(){
$("#ac_menu dt").on("click", function() {
$(this).next().slideToggle();
});
});
</script>

slideToggleを使用してアコーディオンメニューの目次を作成する方法

これも実務でよく出てくる、開閉式の目次ですね。

この目次も、slideToggleを使えばをさくっと作ることができます。

今回は、thisや.nextを使わず要素の指定をセレクタのみで行ってみます。

目次サンプル

HTMLのサンプルコード

<div class="nav_area">
<button class="open_btn">目次を開く</button>
<ul>
<li><a href="">目次1</a></li>
<li><a href="">目次2</a></li>
<li><a href="">目次3</a></li>
<li><a href="">目次4</a></li>
<li><a href="">目次5</a></li>
</ul>
</div>

CSSのサンプルコード

.nav_area {
margin: 1.5rem;
width: 80%;
padding: 1rem;
box-shadow: 0px 0px 2px 4px #dfdfdf;
}

.nav_area ul li {
list-style: none;
padding: 1rem;
}

.nav_area ul {
display: none;
}

jQueryのサンプルコード

<script>
$(".open_btn").on("click", function(){
$(".nav_area ul").slideToggle();
});
</script>

目次アコーディオンメニューの解説

今回の目次アコーディオンとアコーディオンメニューの違いは、要素の指定の仕方です。

これは、slideToggleに限った話ではないのですが、thisはともかく.nextが使用できない場合に積まないよう、セレクタでの指定方法も覚えて頂きたいなと思います。

下記のコードを翻訳すると.open_btnをクリックしたら関数を実行、実行内容は、.nav_area ulをslideToggle(にゅるっと表示)させる。

という内容です。

どちらの指定方法も覚えてslideToggleをマスターしてください。

<script>
$(".open_btn").on("click", function(){
$(".nav_area ul").slideToggle();
});
</script>

our note サービス一覧

our noteはブログに加えて、下記のサービスを行っております。

バナー制作やコーディングなどの、Web制作に関するご依頼を頂いております。

また、私が制作したLINEスタンプの販売も行っております。

詳細は、下記をご覧ください。

ココナラ

LINEスタンプ ゲーマーズスタンプ

「ココナラ」というサービスを活用して、バナー制作やコーディングの案件を受注しております。

品質を担保するため、最大2案件までとさせていただいております。

案件のご相談やご依頼がございましたら、ココナラからご依頼をお願いいたします。

ココナラ

LINEスタンプ

LINEスタンプ ゲーマーズスタンプ

下記のボタンより、私が制作したLINEスタンプをご確認・ご購入いただけます。

LINEスタンプ

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