概要
App Barsコンポーネントの初歩的な使い方のまとめです。
環境
- Windows 10 Professional 1909
- Node.js 12.14.1
- Vue.js 2.6.11
- Vuetify.js 2.2.15
参考
- [Quick start - Vuetify.js] (https://vuetifyjs.com/en/getting-started/quick-start)
- [Components] (https://vuetifyjs.com/en/components/api-explorer)
- [Styles - Colors] (https://vuetifyjs.com/en/styles/colors)
- [Material Design Icons] (https://cdn.materialdesignicons.com/4.5.95/)
[App Bars] (https://vuetifyjs.com/en/components/app-bars)
Props
VAppBar
- [VAppBar] (https://github.com/vuetifyjs/vuetify/blob/v2.2.15/packages/vuetify/src/components/VAppBar/VAppBar.ts)
- [VToolbar] (https://github.com/vuetifyjs/vuetify/blob/v2.2.15/packages/vuetify/src/components/VToolbar/VToolbar.ts)
- [VSheet] (https://github.com/vuetifyjs/vuetify/blob/v2.2.15/packages/vuetify/src/components/VSheet/VSheet.ts)
- [Applicationable] (https://github.com/vuetifyjs/vuetify/blob/v2.2.15/packages/vuetify/src/mixins/applicationable/index.ts)
- [Positionable] (https://github.com/vuetifyjs/vuetify/blob/v2.2.15/packages/vuetify/src/mixins/positionable/index.ts)
- [Scrollable] (https://github.com/vuetifyjs/vuetify/blob/v2.2.15/packages/vuetify/src/mixins/scrollable/index.ts)
- [SSRBootable] (https://github.com/vuetifyjs/vuetify/blob/v2.2.15/packages/vuetify/src/mixins/ssr-bootable/index.ts)
- [Toggleable] (https://github.com/vuetifyjs/vuetify/blob/v2.2.15/packages/vuetify/src/mixins/toggleable/index.ts)
VAppBar ---- VToolbar ---- VSheet ---- BindsAttrs
| `--- Colorable
| `--- Elevatable
| `--- Measurable
| `--- Themeable
|
`--- Applicationable ---- Positionable
`--- Scrollable
`--- SSRBootable
`--- Toggleable
name | type | default | relation | src | |
---|---|---|---|---|---|
VAppBar | clipped-left | boolean | false | v-navigation-drawer | |
clipped-right | boolean | false | v-navigation-drawer | ||
collapse-on-scroll | boolean | false | |||
elevate-on-scroll | boolean | false | |||
fade-img-on-scroll | boolean | false | |||
hide-on-scroll | boolean | false | |||
inverted-scroll | boolean | false | |||
scroll-off-screen | boolean | false | |||
shrink-on-scroll | boolean | false | prominent,dense,short | ||
value | boolean | true | true | ||
VToolbar | absolute | boolean | false | ||
bottom | boolean | false | |||
collapse | boolean | false | |||
dense | boolean | false | |||
extended | boolean | false | |||
extension-height | number or string | 48 | 48 | ||
flat | boolean | false | |||
floating | boolean | false | |||
prominent | boolean | false | |||
short | boolean | false | |||
src | string or object | undefined | v-img | '' | |
tag | string | 'header' | 'header' | ||
tile | boolean | true | true | ||
VSheet | tag | string | - | 'div' | |
tile | boolean | - | |||
Colorable | color | string | undefined | ||
Elevatable | elevation | number or string | undefined | ||
Measurable | height | number or string | undefined | ||
max-height | number or string | undefined | |||
max-width | number or string | undefined | |||
min-height | number or string | undefined | |||
min-width | number or string | undefined | |||
width | number or string | undefined | |||
Themeable | dark | boolean | false | null | |
light | boolean | false | null | ||
Applicationable | app | boolean | false | ||
Positionable | absolute | boolean | - | ||
fixed | boolean | false | |||
Scrollable | scroll-target | string | undefined | ||
scroll-threshold | string or number | undefined | |||
Toggleable | value |
実装例
テーマ
dark
dark
プロパティでダークテーマを適用したアプリケーションバーです。
<v-app dark>
<v-app-bar dark>
<v-app-bar-nav-icon />
<v-toolbar-title>Title</v-toolbar-title>
<v-spacer />
<v-btn icon>
<v-icon>mdi-home</v-icon>
</v-btn>
<v-btn icon>
<v-icon>mdi-magnify</v-icon>
</v-btn>
<v-btn icon>
<v-icon>mdi-account</v-icon>
</v-btn>
<v-btn icon>
<v-icon>mdi-dots-vertical</v-icon>
</v-btn>
</v-app-bar>
<v-content>
<router-view />
</v-content>
</v-app>
light
light
プロパティでライトテーマを適用したアプリケーションバーです。lightプロパティ以外のソースコードはダークテーマと同一です。
カラー
color
プロパティでアプリケーションバーの背景色を指定します。
エレベーション
elevation
プロパティに0
から24
までの数値を指定できます。0は浮き上がり効果がなく、1以上で数値が大きくなるほどアプリケーションバーが浮き上がって見えます。
図はelevation
プロパティに10を指定したものです。
flat
プロパティを指定するとアプリケーションバーの浮き上がり効果を無くすことができます。(elevation
プロパティに0を指定するのと同じ効果です)
アプリケーションバーの高さを変える
下記のプロパティを指定することでアプリケーションバーの高さを変えることができます。デフォルトは56pxです。
prop | height |
---|---|
dense | 48px |
short (default) | 56px |
prominent + dense | 96px |
prominent + short | 112px |
prominent | 128px |
short
プロパティ指定時は56px。(デフォルトの高さなので指定しても変わりません)
prominent
+ dense
プロパティ指定時は96px。
prominent
+ short
プロパティ指定時は112px。
スクロール時のエフェクト
スクロールで縮める
shrink-on-scroll
プロパティを指定するとアプリケーションバーの高さが128pxになりスクロールすると縮みます。
dense
、short
プロパティと組み合わせて高さを変えることができます。
prop | height | shrink |
---|---|---|
shrink-on-scroll | 128px | 56px |
shrink-on-scroll + dense | 96px | 48px |
shrink-on-scroll + short | 112px | 56px |
スクロールで浮き上がらせる
elevate-on-scroll
プロパティを指定するとスクロールで浮き上がる効果が発生します。elevation
プロパティと併用はできません。
スクロールで非表示にする
hide-on-scroll
プロパティを指定すると下へスクロールすると非表示になります。拡張スロットは引き続き表示されます。
※inverted-scroll
、scroll-off-screen
というプロパティもありますが、どのような動作をするのか確認できませんでした。
スクロール時のエフェクトが発生する閾値を決める
scroll-threshold
プロパティでスクロール時のエフェクトが発生するスクロール距離を設定できます。
以下の2つのgifは、scroll-threshold
プロパティの設定によって、hide-on-scroll
とfade-img-on-scroll
プロパティの効果が表れるまでの違いを確認したものです。
アプリケーションバーの背景に画像を使う
src
プロパティでアプリケーションバーの背景に画像を使用することができます。
<v-app-bar src="https://picsum.photos/1920/1080?random">
<!-- 省略 -->
</v-app-bar>
さらにimg
スロットを併用することで画像にエフェクトを加えることができます。
<template v-slot:img="{ props }">
<v-img v-bind="props" gradient="to top right, rgba(55,236,186,.7), rgba(25,32,72,.7)"></v-img>
</template>
fade-img-on-scroll
プロパティを指定するとスクロールで画像をフェードアウトさせることができます。
shrink-on-scroll
プロパティと併用することも可能です。
エクステンションの追加
extension
スロットでアプリケーションバーの下部に拡張メニューを追加することができます。
<template v-slot:extension>
<v-tabs align-with-title fixed-tabs color="white">
<v-tabs-slider color="yellow"></v-tabs-slider>
<v-tab><v-icon>mdi-home</v-icon></v-tab>
<v-tab><v-icon>mdi-magnify</v-icon></v-tab>
<v-tab><v-icon>mdi-account</v-icon></v-tab>
</v-tabs>
</template>
extension
スロットの高さはデフォルトで48pxですが、extension-height
プロパティで任意の高さに指定できます。図は72pxを指定したものです。
extended
プロパティを指定すると、extension
スロットが無くてもextension
スロット分の高さをアプリケーションバーに加えます。
prop | height | |
---|---|---|
extended + dense | 96px | 48px |
extended + short | 104px | 56px |
extended | 112px | 64px |
extended + prominent + dense | 144px | 96px |
extended + prominent + short | 160px | 112px |
extended + prominent | 176px | 128px |
図はextended
プロパティを指定した状態で112pxの高さです。
extension-height
プロパティも反映されます。図は72pxを指定したものです。
extended
で追加した部分にもhide-on-scroll
プロパティは有効です。
アプリケーションバーをたたむ
collapse
プロパティでアプリケーションバーをたたむことができます。このプロパティはプログラマティックに操作したいときに使用するようです。
collapse-on-scroll
プロパティを指定するとスクロールでアプリケーションバーをたたみます。
ナビアイコン
v-app-bar-nav-iconコンポーネントでナビアイコンを表示することができます。
デフォルトはハンバーガーメニュー(Material Design Iconsではmdi-menu
)です。
<v-app-bar>
<v-app-bar-nav-icon />
<!-- 省略 -->
</v-app-bar>
任意のアイコンへ変更する場合はv-iconコンポーネントで指定します。
<v-app-bar-nav-icon>
<v-icon>mdi-vuetify</v-icon>
</v-app-bar-nav-icon>