アコーディオンメニューって意外と実装する機会多いですよね。
LPやコーポレートサイトにも結構実装しなきゃいけないパターンって多いんです。Web製作者にとっては避けては通れない道ということです。
コーディングする時に「これどうやって実装しよう?」って悩んだ方も大勢いると思います。
今回はそんなアコーディオンメニューの解説をしていきます。
ご指導よろしくお願いします!
アコーディオンは基本の”き”です。
今回の記事でしっかり身につけましょう!
目次
そもそもアコーディオンメニューって?
アコーディオンメニューとは、クリックすることでボックスを表示、非表示にする機能のことです。
主に「よくある質問」「規約」などのセクションで使用されます。
つまり、普段は非表示になっているけど気になったらクリックして中身を表示するといった場合に最適な機能なんです。
情報が必要のない人にはそもそも見せないというやり方です。
実装方法
そんな便利なアコーディオンメニューの実装方法を紹介していきます。
今回はすごくシンプルに、アコーディオンの下に下線を引くスタイルです。
HTML
まずはアコーディオンメニューに必要な要素を記載していきます。
※javascriptで使用するクラスは接頭辞に「js」をつける等、javascriptで使用することがわかるクラス名またはID名を使用しましょう!
<div class="accordion">
<button type="button" class="accordion__button js-accordion">バナナはおやつに入りますか?</button>
<p class="accordion__content">はい。保冷バックに入れてきてください。</p>
</div>
<div class="accordion">
<button type="button" class="accordion__button js-accordion">おやつは何円までですか?</button>
<p class="accordion__content">300円までです。</p>
</div>
<div class="accordion">
<button type="button" class="accordion__button js-accordion">遠足に車を使ってもいいですか?</button>
<p class="accordion__content">自分の足で歩いてきてください。</p>
</div>
CSS
CSSで見た目を整えていきます。
.accordion {
border-bottom: 1px solid #000;
text-align: left;
}
.accordion__button {
display: block;
padding: 20px 40px;
position: relative;
text-align: left;
width: 100%;
font-size: 18px;
font-weight: 700;
cursor: pointer;
}
.accordion__button::before,
.accordion__content::before {
display: inline-block;
width: 30px;
height: 30px;
border-radius: 50%;
left: 0;
line-height: 28px;
font-weight: 700;
position: absolute;
text-align: center;
color: #fff;
}
.accordion__button::before {
content: "Q";
top: 50%;
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
background-color: #ff7f3e;
}
.accordion__content {
/* 非表示にする */
display: none;
padding-left: 40px;
padding-bottom: 20px;
position: relative;
}
.accordion__content::before {
content: "A";
top: 0;
background-color: #ffda78;
}
javascript
次にクリックした時の動作を記載していきます。
$(".js-accordion").click(function () {
$(".accordion__content").slideToggle();
});
実装方法の解説
コードがたくさんになってしまいましたが、今回重要なコードはほんの数行です。
以下に重要なコードを抜き出してみます。
CSS
.accordion__content {
/* 非表示にする */
display: none;
padding-left: 40px;
padding-bottom: 20px;
position: relative;
}
今回の場合、「質問(Qのボックス)」と「答え(Aのボックス)」の二つのボックスがあります。
Aのボックスをdisplay:none;で非表示にしておきます。
Qの部分のみが表示されていますね。
javascript
$('.js-accordion').click(function(){
$(this).next().slideToggle();
});
ここからがjavascriptの出番です。クリックした時の動作を付け加えていきます!
先ほどHTMLに記載した、js-accordionというクラスを持つ要素を取得します。(今回はjQueryを使用して実装します。)
jQueryのclickメソッドでclickした時のイベントを記載します。
処理の内容はjQueryのslideToggleメソッドを使用し、
クリックされたらAのボックスが表示、非表示を繰り返すようになっています。
これでアコーディオンメニューの完成ですね!ただし、上記のコードはあくまで一例ですので、表現したいスタイルによって適切なクラスを付与することが大事です。
今回の場合、注意して欲しいのが「$(this)」の箇所を「.accordion__content」と記載しないようにしてください。
アコーディオンメニューは複数ある場合が多いので、同じクラス名を複数のアコーディオンメニューに付与することが多いと思います。
なのでクラス名を指定するのではなく、クリックされた要素「$(this)」に対して処理を記載するようにしてください!
アコーディオンメニューがうまく動作しない場合は検証ツールで
エラーが出力されていないかしっかり確認しよう!
使用サイト例
【公式】マイナビ2026
お知らせ・利用規約・問い合わせのセクションに使用されてます。シンプルで見やすく、影も付いていてボタンであることがわかりやすいです。
以下サイトのリンクです。
↓
クラウドケア
こちらもよくあるアコーディオンメニューの実装例です。プラスアイコンとマイナスアイコンを使用することにより、現在アコーディオンメニューが空いているのか閉じているのかが明確に分かりやすくなっていますね。
以下サイトのリンクです。
↓
ヤマトホールディングス株式会社
ヤマトホールディングスのアコーディオンメニューです。
ボタンをホバーした時に半透明になっているので、このようなアニメーションもユーザーにとってすごくわかりやすいですね。
以下サイトのリンクです。
↓
https://www.yamato-hd.co.jp/investors/faq
まとめ
今回はWeb制作で欠かせないアコーディオンメニューの解説をしました。
大事な要素をまとめておきます。
まとめ
- javascriptで使用する要素は、javascriptで使用することがわかるクラス名またはID名を使用する
- アコーディオンメニューのコンテンツ(下側)はdisplay:none;で非表示にする
- javascirptのメソッドを使用することで表示、非表示を切り替える。
今回紹介したやり方以外でも、アコーディオンメニューは色々な実装方法があるのでぜひご自身でカスタマイズしてみて下さい!
最近のコメント