jQueryで切り替えタブの作り方

JavaScript

<script>” title=”<script>

<script>

今回はページを遷移せず、jQueryでタブの切り替えを行う実装を紹介します!

まずはデモページでこれから作るものを確認します。

【切り替えタブの作り方】HTML編

   <ul class="tab">
      <li class="active">洋画</li>
      <li>邦画</li>
      <li>海外ドラマ</li>
      <li>国内ドラマ</li>
    </ul>
    <div class="content">
      <ul class="show">
        <li>ハリーポッター</li>
        <li>スパイダーマン</li>
        <li>マトリックス</li>
      </ul>
      <ul>
        <li>ALWAYS 三丁目の夕日</li>
        <li>舟を編む</li>
        <li>永遠の0</li>
      </ul>
      <ul>
        <li>ウォーキング・デッド</li>
        <li>ゴシップガール</li>
        <li>スーツ</li>
      </ul>
      <ul>
        <li>タラレバ娘</li>
        <li>トリック</li>
        <li>花より男子</li>
      </ul>
    </div>

解説です。(わかる人は読み飛ばしOK)

<ul class="tab">

まず1行目〜6行目までの<ul class=”tab”>〜</ul>で囲まれている部分が切り替えタブのタブの部分です。

<li class="active">洋画</li>

タブをクリックするとactiveクラスが付与され、コンテンツが切り替わります。

<div class="content">

7行目〜28行目までが切り替えで表示させたいコンテンツ部分になります。

<ul class="show">

デフォルトでコンテンツ部分は非表示に設定してあります。そこでshowクラスが付与されるとコンテンツが表示される仕組みです。

【切り替えタブの作り方】CSS編

.tab{
  border-bottom: 3px solid #d5c5a5;
  display: flex;
  justify-content: space-around;
  padding:0;
}

.tab li{
  width:calc(100%/4);
  color: #333;
  list-style: none;
  text-align: center;
  padding:5px 0;
  border-right: 1px solid #eee;
  cursor: pointer;
  transition: .3s;
}

.tab li.active{
  color: #fff;
  background-color: #d5c5a5;
  cursor: pointer;
}

.content ul{
  display: none;
}

.content ul.show{
  display: block;
}

解説です。(わかる人は読み飛ばしOK)

.tab li.active

切り替えタブでコンテンツが表示されている時のタブのデザイン。

.content ul

display:none;にして全コンテンツ部分を非表示にします。

.content ul.show

反対にshowクラスがついたコンテンツは表示にしたいので、display:block;を設定します。

【切り替えタブの作り方】jQuery編

$(function(){
  $('.tab li').click(function(){
    var index= $('.tab li').index(this);
    $('.tab li').removeClass('active');
    $(this).addClass('active');
    $('.content ul').removeClass('show').eq(index).addClass('show');
  });
});

解説です。(わかる人は読み飛ばしOK)

$('.tab li').click(function(){

タブをクリックしたら実行する

var index= $('.tab li').index(this);

クリックされたタブの順番を変数に格納する

$('.tab li').removeClass('active');

クリック済みのタブのデザインを設定したcssのクラスを一旦削除

$(this).addClass('active')

クリックされたタブにクリック済みデザインを適用する

$('.content ul').removeClass('show').eq(index).addClass('show');

コンテンツを一旦非表示にし、クリックされた順番のコンテンツのみ表示

これで切り替えタブの完成です。

jQueryを使うのでCDNを読み込み忘れないようご注意ください。

JavaScript初心者の方におすすめの本

現場のプロが語る!絶対に読むべきJavaScriptの名著5選