こんにちは!さこちゃんです。
今回は「jQueryを使ったタブメニューの作り方」についてです。

jQueryでタブメニューを作りたいけど難しそう・・・

大丈夫〜実は初歩的なCSSとJSで実装できるんだよ〜
今回の記事はこんな方におすすめ!
デモ紹介
今回はこちらのデモを目指しましょう!
jQueryを使って、タブをクリックしたらタブと表示エリアに「is-active
」というクラス名の付与・除去を行うことで、対応するパネルを表示する、という動きの仕組みです。
それではさっそく実装していきましょう〜
HTMLの書き方
STEP1 jQueryを読み込む
まずはjQueryを</body>の直前に読み込みましょう〜
これがないとタブが動きませんので忘れずに!
<script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
最新のjQueryはこちらからとってね
>> jQuery公式ページ
STEP2 HTMLを書く
HTML構造はこちらです。
タブ(.tab__list
)と表示エリア(.tab__panel
)のHTMLを記載します。
タブのhrefには、飛び先のid
を記載します。
表示エリアのid
には、タブのhrefと同じid
を記載します。
<div class="allwrap">
<div class="tab__container">
/*タブ*/
<ul class="tab__list">
<li class="tab__btn is-active"><a href="#tab01">タブ1</a></li>
<li class="tab__btn"><a href="#tab02">タブ2</a></li>
<li class="tab__btn"><a href="#tab03">タブ3</a></li>
</ul>
/*表示エリア*/
<div class="tab__content">
<div class="tab__panel is-active" id="tab01">
<h2>タブ1</h2>
<p>このテキストはダミーです。このテキストはダミーです。このテキストはダミーです。このテキストはダミーです。</p>
</div>
<div class="tab__panel" id="tab02">
<h2>タブ2</h2>
<p>このテキストはダミーです。このテキストはダミーです。このテキストはダミーです。このテキストはダミーです。</p>
</div>
<div class="tab__panel" id="tab03">
<h2>タブ3</h2>
<p>このテキストはダミーです。このテキストはダミーです。このテキストはダミーです。このテキストはダミーです。</p>
</div>
</div>
</div>
</div>
ページ表示時にタブ1を開いた状態にしたい場合は、.tab__panel
に「is-active
」をつけておきましょう!
HTMLはこれで完了です!
次にCSSを調整していきましょう〜
CSSをあててゆく〜
タブメニューの見た目を整えていきましょう〜
コードはこちら。
.tab__list {
display: flex;
justify-content: center;
gap: 1em;
padding: 0;
margin: 0;
}
.tab__btn {
list-style: none;
width: 180px;
padding: 10px 20px;
margin: 0 2px;
background: #ddd;
}
.tab__btn.is-active {
background: #9a9a9b;
}
.tab__btn a {
display: block;
color: #000;
text-align: center;
text-decoration: none;
}
.tab__panel {
display: none;
background: #FFF;
padding: 50px 20px;
}
.tab__panel.is-active {
display: block;
}
以下で詳しく解説していきます。
解説1 タブを切り替える前の見た目を調整
タブを切り替える前の見た目を調整します。
/* タブのボタンを横並びに */
.tab__list {
display: flex;
justify-content: center;
gap: 1em;
padding: 0;
margin: 0;
}
/* タブのボタンの大きさを調整 */
.tab__btn {
list-style: none;
width: 180px;
padding: 10px 20px;
margin: 0 2px;
background: #ddd;
}
/* タブのボタン内のテキストを調整 */
.tab__btn a {
display: block;
color: #000;
text-align: center;
text-decoration: none;
}
/* タブの表示エリアを非表示にする */
.tab__panel {
display: none;
background: #FFF;
padding: 50px 20px;
}
ポイントは「タブの表示エリアを非表示にする」ことです。
クリック時に表示エリアを表示させたいので、この時点ではdisplay: none;
で非表示にしておきましょう!
解説2 タブを切り替えた後の見た目を調整
次にタブを切り替えた後の見た目を調整します。
/* クリック時に非表示エリアを表示 */
.tab__panel.is-active {
display: block;
}
/* クリック時にボタンの色を変える */
.tab__btn.is-active {
background: #9a9a9b;
}
先ほどdisplay: none;
で非表示にしたエリアにis-active
を付与することで、表示状態にします。
これにより表示エリアの表示/非表示が可能になります!
JSを記述してゆく〜
残るは動きの制御のみです!
コードはこちら。
function GethashID (hashIDName){
if(hashIDName){
$('.tab__btn').find('a').each(function() {
var idName = $(this).attr('href');
if(idName == hashIDName){
var parentElm = $(this).parent();
$('.tab__btn').removeClass("is-active");
$(parentElm).addClass("is-active");
$(".tab__panel").removeClass("is-active");
$(hashIDName).addClass("is-active");
}
});
}
}
$('.tab__btn a').on('click', function() {
var idName = $(this).attr('href');
GethashID(idName);
return false;
});
詳しく解説していきます。
解説1 タブの切り替え実行
function GethashID(hashIDName)
でタブメニューの切り替えを実行します。
function GethashID (hashIDName){
if(hashIDName){
$('.tab__btn').find('a').each(function() {
var idName = $(this).attr('href');
if(idName == hashIDName){
var parentElm = $(this).parent();
$('.tab__btn').removeClass("is-active");
$(parentElm).addClass("is-active");
$(".tab__panel").removeClass("is-active");
$(hashIDName).addClass("is-active");
}
});
}
}
コードの解説
- タブのリンク(
.tab__btn
)の中から、href
が一致するものを探して - そのタブと対応するコンテンツ(
.tab__panel
)を「表示状態(is-active
)」にする - それ以外は全部「非表示(
is-active
を外す)」
解説2 タブをクリック時のイベントハンドラを記述
次にタブをクリック時のイベントハンドラを追記します。
$('.tab__btn a').on('click', function() {
var idName = $(this).attr('href');
GethashID(idName);
return false;
});
コードの解説
.tab__btn a
(タブリンク)がクリックされたら発火- タブ内の リンク名(例:
#tab01
)を取得 GethashID()
に渡して、タブ切り替えを実行return false;
でリンクのデフォルト動作(ページ内ジャンプ)を無効化
以上でデモ通りの動きが完成したはずです!
おわりに
いかがでしたか?
初心者でもわかりやすいようJavaScriptを使ったタブメニューの作り方をご紹介しました。
簡単に実装できるのでぜひ試してみてくださいね。