Vueとbulmaでサイドメニューを作る
仕様:
SideMenu.vueというファイル名で定義する。
見た目はこの形:
また、各メニューリンクを押すと色が変わる。
準備
注意:vue-cliで作成したプロジェクトでの仕様を前提とする
必要npmをインストール。
$ npm install bulma
$ npm install font-awesome
サイドメニューの実装
vueファイル(SideMenu.vue)。コード内のmenu-listがメニューの主要クラスで、この中にliで要素を定義するとそれぞれがメニューの項目になる。
また、changeActiveLinkメソッドをクリック時に発動させることで、各メニュー項目が押されたらそれに対してis-active'
を設定することでアクティブ時の色に変更する。
SideMenu.vue
<template>
<aside class="column is-2 is-narrow-mobile is-fullheight section is-hidden-mobile has-background-dark">
<p class="menu-label is-hidden-touch has-text-white">Navigation</p>
<ul class="menu-list">
<li>
<a href="#" :class="{ 'is-active': activeNum == 0 }" @click="changeActiveLink(0)">
<span class="icon"><i class="fa fa-home"></i></span> Home
</a>
</li>
<li>
<a href="#" :class="{ 'is-active': activeNum == 1 }" @click="changeActiveLink(1)">
<span class="icon"><i class="fa fa-book"></i></span> Other
</a>
<ul>
<li>
<a href="#" :class="{ 'is-active': activeNum == 10 }" @click="changeActiveLink(10)">
<span class="icon is-small"><i class="fa fa-link"></i></span> Twitter
</a>
</li>
<li>
<a href="#" :class="{ 'is-active': activeNum == 11 }" @click="changeActiveLink(11)">
<span class="icon is-small"><i class="fa fa-link"></i></span> Qiita
</a>
</li>
</ul>
</li>
<li>
<a href="#" :class="{ 'is-active': activeNum == 13 }" @click="changeActiveLink(13)">
<span class="icon"><i class="fa fa-info"></i></span> About
</a>
</li>
</ul>
</aside>
</template>
<script>
export default {
data () {
return {
activeNum: 0
}
},
methods: {
changeActiveLink (n) {
this.activeNum = n
}
}
}
</script>
こちらのサイドバーを以下App.js内で参照する。
route-view部分はメインコンテンツですが、本題ではないので任意の要素に置き換えて大丈夫です。
App.vue
<template>
<div id="app">
<div class="main-content columns is-fullheight">
<side-menu/>
<div class="container column is-10">
<router-view/>
</div>
</div>
</div>
</template>
<script>
import SideMenu from '@/components/SideMenu'
export default {
name: 'app',
components: {
SideMenu
}
}
</script>
<style lang="sass">
// サイドメニューの色設定
$menu-item-active-background-color: hsl(171, 100%, 41%);
$menu-item-color: hsl(0, 0%, 100%);
@import '~bulma';
$fa-font-path: '~font-awesome/fonts/';
@import '~font-awesome/scss/font-awesome';
</style>
本質的な部分だけコード化するために、マジックナンバーが入っていたりとリファクタリングすべき部分が残っているので、適宜読みやすいよう修正をお願いします。
参考
menuデザインの参考元:
Bulma sidebar
Author And Source
この問題について(Vueとbulmaでサイドメニューを作る), 我々は、より多くの情報をここで見つけました https://qiita.com/umeneri/items/0bf295f772689dc7fa8d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .