LoginSignup
25
20

More than 3 years have passed since last update.

Vuetify.js 2.2のApp Barsコンポーネントについて

Posted at

概要

App Barsコンポーネントの初歩的な使い方のまとめです。

環境

  • Windows 10 Professional 1909
  • Node.js 12.14.1
  • Vue.js 2.6.11
  • Vuetify.js 2.2.15

参考

App Bars

Props

VAppBar

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>

appbar-dark.png

light

lightプロパティでライトテーマを適用したアプリケーションバーです。lightプロパティ以外のソースコードはダークテーマと同一です。
appbar-light.png

カラー

colorプロパティでアプリケーションバーの背景色を指定します。
appbar-color.png

エレベーション

elevationプロパティに0から24までの数値を指定できます。0は浮き上がり効果がなく、1以上で数値が大きくなるほどアプリケーションバーが浮き上がって見えます。
図はelevationプロパティに10を指定したものです。
appbar-elevation.png

flatプロパティを指定するとアプリケーションバーの浮き上がり効果を無くすことができます。(elevationプロパティに0を指定するのと同じ効果です)
appbar-flat.png

アプリケーションバーの高さを変える

下記のプロパティを指定することでアプリケーションバーの高さを変えることができます。デフォルトは56pxです。

prop height
dense 48px
short (default) 56px
prominent + dense 96px
prominent + short 112px
prominent 128px

denseプロパティ指定時は48px。
appbar-dense.png

shortプロパティ指定時は56px。(デフォルトの高さなので指定しても変わりません)
appbar-short.png

prominent + denseプロパティ指定時は96px。
appbar-prominent-dense.png

prominent + shortプロパティ指定時は112px。
appbar-prominent-short.png

prominentプロパティ指定時は128px。
appbar-prominent.png

スクロール時のエフェクト

スクロールで縮める

shrink-on-scrollプロパティを指定するとアプリケーションバーの高さが128pxになりスクロールすると縮みます。
denseshortプロパティと組み合わせて高さを変えることができます。

prop height shrink
shrink-on-scroll 128px 56px
shrink-on-scroll + dense 96px 48px
shrink-on-scroll + short 112px 56px

appbar-shrink-on-scroll.gif

スクロールで浮き上がらせる

elevate-on-scrollプロパティを指定するとスクロールで浮き上がる効果が発生します。elevationプロパティと併用はできません。
appbar-elevate-on-scroll.gif

スクロールで非表示にする

hide-on-scrollプロパティを指定すると下へスクロールすると非表示になります。拡張スロットは引き続き表示されます。
appbar-hide-on-scroll.gif

inverted-scrollscroll-off-screenというプロパティもありますが、どのような動作をするのか確認できませんでした。

スクロール時のエフェクトが発生する閾値を決める

scroll-thresholdプロパティでスクロール時のエフェクトが発生するスクロール距離を設定できます。
以下の2つのgifは、scroll-thresholdプロパティの設定によって、hide-on-scrollfade-img-on-scrollプロパティの効果が表れるまでの違いを確認したものです。

scroll-thresholdプロパティは未設定
appbar-scroll-threshold-0.gif

scroll-thresholdプロパティは300を設定
appbar-scroll-threshold-300.gif

アプリケーションバーの背景に画像を使う

srcプロパティでアプリケーションバーの背景に画像を使用することができます。

<v-app-bar src="https://picsum.photos/1920/1080?random">
  <!-- 省略 -->
</v-app-bar>

appbar-src-default.png

さらに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>

appbar-src.png

fade-img-on-scrollプロパティを指定するとスクロールで画像をフェードアウトさせることができます。
appbar-fade-img-on-scroll-1.gif

shrink-on-scrollプロパティと併用することも可能です。
appbar-fade-img-on-scroll-2.gif

エクステンションの追加

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>

図は上記のコードでタブグループを追加したものです。
appbar-extention.png

extensionスロットの高さはデフォルトで48pxですが、extension-heightプロパティで任意の高さに指定できます。図は72pxを指定したものです。
appbar-extention-plus-72.png

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の高さです。
appbar-extended.png

extension-heightプロパティも反映されます。図は72pxを指定したものです。
appbar-extended-plus-72.png

extendedで追加した部分にもhide-on-scrollプロパティは有効です。
appbar-hide-on-scroll-extended.gif

アプリケーションバーをたたむ

collapseプロパティでアプリケーションバーをたたむことができます。このプロパティはプログラマティックに操作したいときに使用するようです。

appbar-collapse.gif

collapse-on-scrollプロパティを指定するとスクロールでアプリケーションバーをたたみます。
appbar-collapse-on-scroll.gif

ナビアイコン

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>

appbar-nav-icon.png

25
20
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
20