Vue.jsにはVuetifyというUIライブラリがあるのをご存知でしょうか?
Vuetifyでは綺麗なマテリアルコンポーネントが提供されているので、デザインスキルがないエンジニアでもCSSを書かなくても整ったデザインのアプリケーションを開発するのに役立ちます。
Vuetifyは導入も簡単で、タグを指定するだけで綺麗なデザインのコンポーネントを使用することができるので非常に便利です。
この記事ではVuetifyのインストール方法から使い方まで詳しく解説していきたいと思います。
Vue.jsのプロジェクトにVuetifyをインストールする
では早速Vue.jeプロジェクトを作成して、そのプロジェクトでVuetifyを使用できるようにインストールしていきましょう。
Vuetifyをインストールする方法はnpmやyarn、CDN読み込みなど様々な方法でインストールすることができますが、ここではVue CLIでVue.jsをプロジェクト作成して、Vuetifyもインストールしていきたいと思います。
Vue CLIでVue.jsプロジェクトの作成
まずは下記コマンドでVue.jsのプロジェクトを作成していきましょう。
vue create vuetify-project
プリセットの選択を聞かれるので、ここではVue2を指定してプロジェクトを作成していきましょう。
Vue CLI v5.0.4
? Please pick a preset: (Use arrow keys)
Default ([Vue 3] babel, eslint)
❯ Default ([Vue 2] babel, eslint)
Manually select features
Vuetifyのインストール
プロジェクトの作成に成功したら、cdコマンドでプロジェクトディレクトリに移動します。
cd vuetify-project
プロジェクトディレクトリに移動したら、下記コマンドでVuetifyをインストールすることができます。
vue add vuetify
ここでもプリセットの選択を聞かれるので、Default(recommended)を選択しましょう。
? Choose a preset:
Configure (advanced)
❯ Default (recommended)
Vite Preview (Vuetify 3 + Vite)
Prototype (rapid development)
Vuetify 3 Preview (Vuetify 3)
Vuetifyのインストールが完了したら、下記コマンドでサーバーを起動して確認してみましょう。
npm run serve
画面がVuetify仕様になっていますね。
Vuetifyを使ってみよう
それではVue.jsのプロジェクトにVuetifyをインストールすることができたので、実際にVuetifyを使ってみましょう。
今回はサイトナビゲーションを実装しながら、Vuetifyの使い方について学んでいきましょう。
v-appタグ
Vuetifyのコンポーネントを利用するためには、全てのコンポーネントをv-app
タグでラップする必要があります。
<template>
<v-app></v-app>
</template>
<script>
export default {
name: "App"
};
</script>
v-app
タグの中にv-
から始まるVuetifyのコンポーネントを記述していきます。
App barsコンポーネント
まずはナビゲーションバーを実装していきます。
ナビゲーションバーを実装するには、App barsコンポーネントを使用します。
<template>
<v-app>
<v-app-bar app color="blue" dark>
<v-app-bar-nav-icon></v-app-bar-nav-icon>
<v-app-bar-title>アプリ</v-app-bar-title>
</v-app-bar>
</v-app>
</template>
<script>
export default {
name: "App"
};
</script>
v-app-bar
タグがApp barsコンポーネントです。
<v-app-bar app color="blue" dark>
<v-app-bar-nav-icon></v-app-bar-nav-icon>
<v-app-bar-title>アプリ</v-app-bar-title>
</v-app-bar>
porpsのapp
を指定すると、CSSのposition: fixed
が適用されます。
color
でナビゲーションバーの背景色を青色にしています。また、dark
を指定することで、テーマがDarkテーマとなり文字色が白色になります。
また、v-app-bar
タグの子要素が2つ存在しますね。
v-app-bar-nav-icon
タグはハンバーガーメニューのアイコンを表示します。
<v-app-bar-nav-icon></v-app-bar-nav-icon>
v-app-bar-title
タグではナビゲーションバーにタイトルを指定し、表示することができます。
<v-app-bar-title>アプリ</v-app-bar-title>
たったこれだけでナビゲーションバーを実装することができました。
Navigation drawersコンポーネント
それでは続いて、ナビゲーションバーのハンバーガーメニューをクリックした際に、表示されるナビゲーションドロワーを実装していきましょう。
ナビゲーションドロワーの実装には、Navigation drawersコンポーネントを使用します。
<template>
<v-app>
<v-app-bar app color="blue" dark>
<v-app-bar-nav-icon @click="drawer = !drawer"></v-app-bar-nav-icon>
<v-app-bar-title>アプリ</v-app-bar-title>
</v-app-bar>
<v-navigation-drawer v-model="drawer" absolute temporary>
<v-list nav dense>
<v-list-item-group>
<v-list-item v-for="item in listItems" :key="item.id">
<v-list-item-title>{{ item.text }}</v-list-item-title>
</v-list-item>
</v-list-item-group>
</v-list>
</v-navigation-drawer>
</v-app>
</template>
<script>
export default {
name: "App",
data: () => ({
drawer: false,
listItems: [
{
id: 1,
text: "foo",
},
{
id: 2,
text: "bar",
},
{
id: 3,
text: "fizz",
},
{
id: 4,
text: "buzz",
},
],
}),
};
</script>
v-navigation-drawer
タグがNavigation drawersコンポーネントです。
<v-navigation-drawer v-model="drawer" absolute temporary>
</v-navigation-drawer>
propsのabsolute
を指定すると、position: absolute
が適用されます。また、temporary
を指定すると、ドロワーがアプリケーション画面の上に重なるように表示させることができます。
v-model
の値にはdata
プロパティのdrawer
を指定して、ドロワーの開閉状態を管理します。
また、ナビゲーションバーのハンバーガーメニューのアイコンをクリックした時にドロワーが表示されるように実装するため、v-app-bar-nav-icon
タグにclick
イベントを設定します。
<v-app-bar-nav-icon @click="drawer = !drawer"></v-app-bar-nav-icon>
ナビゲーションドロワーの中身にはv-list
タグでリストコンポーネントを表示するようにしています。
<v-navigation-drawer v-model="drawer" absolute temporary>
<v-list nav dense>
<v-list-item-group>
<v-list-item v-for="item in listItems" :key="item.id">
<v-list-item-title>{{ item.text }}</v-list-item-title>
</v-list-item>
</v-list-item-group>
</v-list>
</v-navigation-drawer>
これでハンバーガーメニューのアイコンをクリックすることで、ドロワーが表示されるようになり、表示後はドロワーの外をクリックすることでドロワーが非表示になります。
たったこれだけでサイトナビゲーションを実装することができました。
まとめ
Vuetifyのインストール方法から基本的な使い方まで紹介してきました。
とても簡単に綺麗なUIコンポーネントを利用できることが実感できたのではないでしょうか?
ぜひVue.jsでアプリケーション開発を行う際は、Vuetifyの導入を検討してみてくださいね。