jQueryでタブメニューを作る方法を解説!
今回はjQueryを用いて、タブメニューを制作する方法をサンプルコード付きで解説します。jQueryを用いることで、簡単にタブメニューを作ることができます。ぜひサンプルコードをコピペ、スタイルを調整して使用してください。
jQueryでタブメニューを作りたい
今回はプラグインを使わずにjQueryを書いてこのようなデザインのタブメニューを作る方法を解説します。
jQueryでタブメニューを作る方法
HTML
<!-- タブメニュー -->
<a class="tab_menu active" href="#item1">タブ1</a>
<a class="tab_menu" href="#item2">タブ2</a>
<a class="tab_menu" href="#item3">タブ3</a>
<!-- タブのコンテンツ部分 -->
<div class="tab_item active" id="item1">タブ1のコンテンツ</div>
<div class="tab_item" id="item2">タブ2のコンテンツ</div>
<div class="tab_item" id="item3">タブ3のコンテンツ</div>
今回使用するHTMLはタブメニューとコンテンツ部分の2つに分かれています。
タブメニューでは選択されるとactive
クラスが付与され、それぞれのコンテンツが表示される仕組みとなっています。
id
を付与することで、タブメニュークリックした時に同じid
のコンテンツが表示されるようになります。
CSS
タブメニューの実装に重要な部分は、active
クラスに関する記述です。
もとの状態でのスタイルと、選択されたときのactive
クラスが付与されたときのスタイルの2種類を用意します。
2種類用意することでjQueryでクラスの付与、排除を行ってスタイルを切り替えることができるという仕組みです。
CSS
/*最初は表示されないように*/
.tab_item {
display: none;
}
/*activeクラスが付与されたとき*/
.active {
display: block;
opacity: 1;
border-bottom: solid 1px tomato;
background: tomato;
color: #fff;
}
a {
cursor: pointer;
color: tomato;
}
.tab_menu {
display: inline-block;
width: 100px;
padding: 5px;
font-size: 18px;
text-align: center;
border-radius: 8px 8px 0 0;
border: solid 1px tomato;
}
.tab_item {
font-size: 16px;
height: 200px;
padding: 20px;
background-color: tomato;
}
元々のコンテンツ部分には display: none;
をかけて非表示状態にしておき、active
クラスがついたコンテンツだけ表示されるようにします。
また、タブメニューを display: inline-block;
で横並びにしておきましょう。
これで見た目はいい感じになりました。次はjQueryで動きをつけていきます。
jQuery
jQueryのアクションイベントの多くは、「〇〇を押したら△△クラスをつける」「〇〇を押したら△△クラスを外す」を行っているだけです。
ここでは、
①タブメニューをクリックしたらactive
クラスを外し、
②クリックしたメニューにだけactive
クラスを付与する
という処理を行っていきます。
$(function() {
//タブをクリックしたら発動
$('.tab_menu').on('click', function() {
//選択されていた.tab_itemからactiveクラスを取り除く
$('.tab_item').removeClass('active');
//クリックされた.tab_itemにactiveクラスを付与
$($(this).attr('id')).addClass('active');
//選択されていた.tab_menuからactiveクラスを取り除く
$('.tab_menu').removeClass('active');
//クリックされた.tab_menuにactiveクラスを付与
$(this).addClass('active');
});
});
クリックされたtabにactive
クラスを付与する.addClass()
メソッド前に、選択されていたtabからactive
クラスを取り除く処理.removeClass()
メソッドがないと、前にクリックしたコンテンツ部分が表示されたままになってしまうので忘れないようにしましょう。
タブメニューの切り替えにアニメーションを付ける
上記のサンプルコードでは、タブを切り替えるとシンプルにリストの中身が変わるようなデザインでした。
次はjQueryに変更を加えて、タブメニューの切り替え時にアニメーションをつけていきたいと思います。
ここでは、タブメニューをクリックすると「フワッ」とコンテンツが切り替わるように、フェードインを使用してアニメーションを実装していきます。
$(function() {
$('.tab_menu').on('click', function() {
$('.tab_item').removeClass('active');
$($(this).attr('id')).addClass('active');
$('.tab_menu').removeClass('active');
$(this).addClass('active');
});
//ここから下を追加
$('.tab_menu').click(function() {
//コンテンツを一旦非表示
$('.tab_item').css('display','none');
//クリックしたタブに応じてコンテンツを表示
$($(this).attr('id')).fadeIn(500).addClass('active');
});
});
これで「フワッ」とコンテンツが切り替わるようになりました。
fadeIn()
メソッドの引数には1ミリ秒を単位とする時間の指定が可能です。
つまり、fadeIn(500)
と記述すると、0.5秒かけて表示するという意味になります。引数を変えて自分好みに調節してみてください。
また、Swiperというプラグインを使えば簡単にスライドをつくることができます。
いろいろ試して自分にとって最適なアニメーションを実装してみてください。
