※ 当サイトではアフィリエイト広告を利用しています

アコーディオンメニューでプラスとマイナスの切り替え

jQuery

こんにちは、ゆんつです。

企業のWEBサイトでは「Q&A」のページをよく見かけます。

Q&Aのページでは質問部分をクリック又はタッチしするとスーッと回答が現れ、再びタッチすると回答が閉じるというというものが多いようです。

そのように、親メニューをタッチすると子メニューが開くメニューを「アコーディオンメニュー」と言います。

See the Pen
accordion1
by konpure (@yuntu)
on CodePen.

このアコーディオンメニュー。

子メニューが閉じているときは親メニューにはプラスのマークがついていて、子メニューが開くとプラスからマイナスに切り替わるものをよく見ます。

回答が閉じているときはプラスマーク

回答が開いているときはマイナスマーク

これらのプラスマイナスは、Font Awsomeなどを使って表現することもできますが、HTMLとCSSとjQueryで作ることも出来ます。

今日は

HTMLとCSSでプラスとマイナスを作り、jQueryでプラスとマイナスを切り替える方法

について書きたいと思います。

疑似要素とjQueryを使う

閉じてる状態のときは「+」、開いている状態のときは「-」にしたい場合、疑似要素とjQueryを使うと簡単に実現できます。

まずプラスマイナスを設定したい要素に、疑似要素のbeforeとafterで全く同じ横線を2つ作ります。

疑似要素で横棒を2つ作る

そして、どちらか一方の線だけ90度回転させるとプラスマークになります!

2つの横棒のどちらかを90度回転させるとプラスマークになる

ゆんつ
ゆんつ

簡単!

親メニューのクリックをきっかけにしてプラスとマイナスを切り替えるには、回転が0℃になるクラスを作成し、jQueryの「toggleClass」使ってどちらか一方の疑似要素にクリックのたびにそのクラスがついたり外れたりするようにしてあげれば良いだけです。

具体的に作ってみます。

See the Pen
plus→minus
by konpure (@yuntu)
on CodePen.

解りやすくするために、2本の棒の色は別々にしてあります。

青いボタンをクリックすると、そのたびにプラスとマイナスが切り替わっていることと思います。

あとは、これをアコーディオンメニュー(クリックすると開くメニュー)の親メニューの端っこに配置し、jQueryのslideToggleと組み合わせてアコーディオンの開閉と合わせることで子メニューが閉じているときはプラス、開いているときはマイナスになるアコーディオンメニューを作ることが出来ます。

See the Pen
accordion2
by konpure (@yuntu)
on CodePen.

ゆんつ
ゆんつ

簡単だったね

それでは、またー。

コメント