LoginSignup
0
0

More than 1 year has passed since last update.

Vue.js 2系で簡単にタブ切り替えを実装する

Last updated at Posted at 2023-01-31

はじめに

仕事でVue.js(2系)でタブ切り替えを実装することになったので、アウトプットも兼ねて記事で解説してみようと思いました。
※ [注意]サンプルはVue.js(2系)でしか動きません。

まずはHTMLから記述します。

HTML

<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14"></script>

<div id="app">
  <div class="tabGroup">
    <ul class="tabNav">
      <li @click="select(1)" :class="{'active': show == 1}">
        タブAのボタン
      </li>
      <li @click="select(2)" :class="{'active': show == 2}">
        タブBボタン
      </li>
    </ul>
    <div class="tabContent">
      <div v-if="show == 1">タブAの内容を表示</div>
      <div v-else-if="show == 2">タブBの内容を表示</div>
    </div>
  </div>
</div>

上記の<li @click="select(1)" :class="{'active': show == 1}">
liにクリックイベントを設定し、クリックされたらselectメソッドを呼び出しています。

また:class="{'active': show == 1}"はshowの値が1だったらactiveのclassを付与しています。

タブの内容を表示するところは
v-if="show == 1"だったらタブAの内容を表示し
v-else-if="show == 2"だったらタブBの内容を表示するようにしています。

次はJavaScriptを記述します。

JavaScript

new Vue({
	el: '#app',
  data: {
    show: 1
  },
  methods: {
    select (number) {
      this.show = number;
    }
  }
})

上記の
data: { show: 1 }
でshowの値の初期値を1に設定しています。

HTMLのliのクリックイベントで紐付けたselectメソッドでは渡ってきたパラメータをshowの値にセットしています。
this.show = number;

これでタブのボタンのクリックイベントに紐づいているパラメーターとshowの値が同じ場合のみ、タブのボタンにactiveクラスが付与されて、タブの中身のコンテンツも1つだけ表示されるようになりました。
簡単にタブ切り替えが実装できました。

実装サンプル

See the Pen Untitled by hiromixxx (@hiromixxx) on CodePen.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0