jQueryからVue.jsの移行が始まっているので、勉強を兼ねてVue.jsでハンバーガーメニューを作成しました。
出来上がったコードをみると、確かにVue.jsの方が少ないコードで実装できることを実感しました。jQueryもいいけど、Vue.jsも面白い。
See the Pen Untitled by This is standard (@koutafunahashi) on CodePen.
CodePenに実装したものをアップしています。
ポイントはメニューをクリックした後、ハンバーガーメニューが閉じる事。
jQueryだとこの処理も書かなければならなかったのですが、Vue.jsは数行のコードで実装することができたのが、ちょっと驚き。
var app = new Vue({ el: '#nav', data: { active: false } });
<nav id="nav"> <div class="hamburger" v-on:click='active=!active'> <span class="line line01" v-bind:class="{'v-line01':active}"></span> <span class="line line02" v-bind:class="{'v-line02':active}"></span> <span class="line line03" v-bind:class="{'v-line03':active}"></span> </div> <!--/ハンバーガーボタンここまで--> <div class="menu" v-show="active"> <ul> <li><a href="#concept" v-on:click='active=!active'>CONCEPT</a></li> <li><a href="#product" v-on:click='active=!active'>PRODUCT</a></li> <li><a href="#company" v-on:click='active=!active'>COMPANY</a></li> <li><a href="#news" v-on:click='active=!active'>NEWS</a></li> </ul> </div> </nav> <!--/メニューここまで-->
Vue.jsのコードはこのくらいです。
activeをfalseにしておくことで、HTMLのmenuブロックが表示になります。
v-showの箇所です。displayを切り替える指定になります。
v-on:click='active=!active'を記述することで、jQueryのtoggle()と同じ働きが実装できます。これが驚きでした。簡単!
これをメニューのaタグに記述することで、クリックするとメニューを非表示に実装することができます。
もっと早く勉強しておけばよかった。。。w
これからもjQuery→Vue.jsを勉強していきたいと思います。