カテゴリー: ウェブ制作

タグ:JS(6)  Vue.js(2)  切り替えタブ(1)  

Vue.jsを使って切り替えタブを作る

今回はVue.jsを使って簡単な切り替えタブを作っていきたいと思います!

こんな感じのものを作ってみようと思っています↓

See the Pen KbJbZa by tipdip (@tipdip_blog) on CodePen.

HTMLとJSを記述する

まずはhead内でVue.jsを読み込んでいきます。

HTMLのhead内に記述
<head>
・
・
中略
・
・
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
</head>

これでVue.jsを使う準備ができました!

次にbody内に切り替えタブ部分を記述していきましょう。

HTMLのbody内に記述
<body>
<div id="tabBox">
    <div id="tabs">
        <input type="radio" value="1" id="tab1" v-model="isActive"></input>
        <label for="tab1">タブ1</label>

        <input type="radio" value="2" id="tab2" v-model="isActive"></input>
        <label for="tab2">タブ2</label>

        <input type="radio" value="3" id="tab3" v-model="isActive"></input>
        <label for="tab3">タブ3</label>
    </div>
    <ul id="contents">

        <li v-if="isActive == '1'">
            <p class="title">テスト</p>
            <p>テスト本文テスト本文テスト本文テスト本文テスト本文<br>
            テスト本文テスト本文テスト本文テスト本文テスト本文テスト本文</p>
        </li>

        <li v-else-if="isActive == '2'">
            <p class="title">テスト2</p>
            <p>テスト本文2テスト本文2テスト本文2テスト本文2テスト本文2<br>
            テスト本文2テスト本文2テスト本文2テスト本文2テスト本文2テスト本文2</p>
        </li>

        <li v-else-if="isActive == '3'">
            <p class="title">テスト3</p>
            <p>テスト本文3テスト本文3テスト本文3テスト本文3テスト本文3<br>
            テスト本文3テスト本文3テスト本文3テスト本文3テスト本文3テスト本文3</p>
        </li>
    </ul>
</div><!--tabBox-->

<script src="./js/func.js"></script>

</body>

『#tabs』がタブにあたる部分です。

仕組みとしてはinputのvalueをv-modelを使って『isActive』に渡し、『#contents』の中に表示する要素をv-ifで指定しています。

続いて、『func.js』内にjsの記述をしていきます。

func.js内の記述
new Vue ({
    el: '#tabBox',
    data: {
        isActive: '1',
    }
})

と言っても、記述はこれだけです。

これでシステム自体は完成しています。

実際にタブの切り替えができているはずです!

あとは、CSSでスタイル付けしていくだけです。

CSSを記述する

参考までに、デモで作った切り替えタブのCSSを記述します。

CSS
#tabs {
    overflow: hidden;
}

#tabs input {
  display: none;
}

#tabs label {
    display: inline-block;
    line-height: 40px;
    width: 120px;
    text-align: center;
    cursor: pointer;
    background: #eee;
    transition: 0.3s;
    border-radius: 10px 10px 0 0;
}

#tabs input:checked + label,
#tabs label:hover {
    background: #56B4BE;
    color: #fff;
}

#contents {
    width: 500px;
    height: 90px;
    padding: 5px 10px;
    box-shadow: 1px 1px 1px 0 rgba(0,0,0,0.2);
    border: 1px solid #eee;
    border-top: 2px solid #56B4BE;
}

#contents p {
  font-size: 15px;
  margin: 0;
}

#contents p.title {
  font-size: 16px;
  font-weight: bold;
}

こんな感じでした!

まとめ

いかがでしたでしょうか?

JQueryで作成するよりも、かなりシンプルな記述で作成することができます。

Vue.jsの入門としてもチャレンジしやすいと思うので、ぜひ作ってみてください!

では、また。

2019.01.16

Twitterでつぶやく

Facebookでシェアする

実験中→ いいね: 13 ツイート: 0

おすすめの記事

TOP