Skip to content

Tabbar 标签栏 - Vant 4

Tabbar タブバー 📱

紹介 ✨

ボトムナビゲーションはモバイルアプリの定番!🎯 画面下部に固定され、ページ間を簡単に切り替えられます。スマホの Dock のように主要機能への入口を提供。アイコン、バッジ、カスタムスタイルなど多機能で、現代的なアプリに欠かせないコンポーネントです。

取り込み

以下の方法でコンポーネントをグローバル登録します。詳細はコンポーネント登録を参照してください。

js
import { createApp } from'vue'; import { Tabbar, TabbarItem } from'vant'; const app = createApp(); app.use(Tabbar); app.use(TabbarItem);

コード例 🚀

基本的な使い方 📋

最も簡単な使い方!🎉 v-model で選択中のタブのインデックス/名前をバインドし、変更で切り替え。各タブはアイコンと文字を持ち、クリックでページを切り替えます。

html
<van-tabbar v-model="active">
  <van-tabbar-item icon="home-o">タブ</van-tabbar-item>
  <van-tabbar-item icon="search">タブ</van-tabbar-item>
  <van-tabbar-item icon="friends-o">タブ</van-tabbar-item>
  <van-tabbar-item icon="setting-o">タブ</van-tabbar-item>
</van-tabbar>
js
import { ref } from 'vue';

export default {
  setup() {
    const active = ref(0);
    return { active };
  },
};

名前でマッチング 🏷️

より意味のある管理方法!✨ タブに name を指定すると、v-model の値はその name になります。インデックスを覚える必要がなく、読みやすいコードに。

html
<van-tabbar v-model="active">
  <van-tabbar-item name="home" icon="home-o">首页</van-tabbar-item>
  <van-tabbar-item name="search" icon="search">搜索</van-tabbar-item>
  <van-tabbar-item name="friends" icon="friends-o">朋友</van-tabbar-item>
  <van-tabbar-item name="setting" icon="setting-o">设置</van-tabbar-item>
</van-tabbar>
js
import { ref } from 'vue';

export default {
  setup() {
    const active = ref('home');
    return { active };
  },
};

バッジ表示 🔴

重要情報を見逃さない!💡 dot で右上に赤いドット、badge で数字バッジを表示。未読数の表示に最適です。

html
<van-tabbar v-model="active">
  <van-tabbar-item icon="home-o">タブ</van-tabbar-item>
  <van-tabbar-item icon="search" dot>タブ</van-tabbar-item>
  <van-tabbar-item icon="friends-o" badge="5">タブ</van-tabbar-item>
  <van-tabbar-item icon="setting-o" badge="20">タブ</van-tabbar-item>
</van-tabbar>

カスタムアイコン 🎨

独自のビジュアル体験を!🌟 icon スロットでアイコンをカスタマイズし、選択状態に応じて切り替え可能です。

html
<van-tabbar v-model="active">
  <van-tabbar-item badge="3">
    <span>自定义</span>
    <template #icon="props">
      <img :src="props.active ? icon.active : icon.inactive" />
    </template>
  </van-tabbar-item>
  <van-tabbar-item icon="search">タブ</van-tabbar-item>
  <van-tabbar-item icon="setting-o">タブ</van-tabbar-item>
</van-tabbar>
js
import { ref } from 'vue';

export default {
  setup() {
    const active = ref(0);
    const icon = {
      active: 'https://fastly.jsdelivr.net/npm/@vant/assets/user-active.png',
      inactive: 'https://fastly.jsdelivr.net/npm/@vant/assets/user-inactive.png',
    };
    return { icon, active };
  },
};

カスタムカラー 🌈

タブバーを個性化!🎨 active-color で選択色、inactive-color で非選択色を設定し、テーマに溶け込みます。

html
<van-tabbar v-model="active" active-color="#ee0a24" inactive-color="#000">
  <van-tabbar-item icon="home-o">タブ</van-tabbar-item>
  <van-tabbar-item icon="search">タブ</van-tabbar-item>
  <van-tabbar-item icon="friends-o">タブ</van-tabbar-item>
  <van-tabbar-item icon="setting-o">タブ</van-tabbar-item>
</van-tabbar>

切り替えイベントの監視 👂

ユーザー操作に即応!⚡ change イベントで選択タブの変化を監視し、データ読み込みや統計処理などを実行できます。

html
<van-tabbar v-model="active" @change="onChange">
  <van-tabbar-item icon="home-o">タブ1</van-tabbar-item>
    <van-tabbar-item icon="search">タブ2</van-tabbar-item>
    <van-tabbar-item icon="friends-o">タブ3</van-tabbar-item>
    <van-tabbar-item icon="setting-o">タブ4</van-tabbar-item>
</van-tabbar>
js
import { ref } from 'vue';
import { showToast } from 'vant';

export default {
  setup() {
    const active = ref(0);
    const onChange = (index) => showToast(`タブ ${index}`);
    return { active, onChange };
  },
};

ルーターモード 🛣️

Vue Router と完全統合!🚀 ルーターモードではページパスと to を一致させ、自動で該当タブを選択します。SPA のナビゲーション体験を実現。

html
<van-tabbar route>
  <van-tabbar-item replace to="/home" icon="home-o">
    首页
  </van-tabbar-item>
  <van-tabbar-item replace to="/search" icon="search">
    搜索
  </van-tabbar-item>
</van-tabbar>

API 📖

Tabbar Props

パラメータ説明デフォルト
v-model🎯 選択中タブの名前またはインデックスnumber | string0
fixed📌 下部に固定booleantrue
border🖼️ 外枠を表示booleantrue
z-index📏 z-indexnumber | string1
active-color🌟 選択色string#1989fa
inactive-color🌫️ 非選択色string#7d7e80
route🛣️ ルーターモードbooleanfalse
placeholder📱 固定時に同高さのプレースホルダを生成booleanfalse
safe-area-inset-bottom🛡️ セーフエリア下部対応booleanfalse
before-change⚡ 切り替え前のコールバック(false で中止、Promise 可)(name: number | string) => boolean | Promise<boolean>-

Tabbar Events

イベント名説明コールバック引数
change🔄 タブ切り替え時に発火active: number | string

TabbarItem Props

パラメータ説明デフォルト
name🏷️ タブ名(識別子)number | stringタブのインデックス
icon🎨 アイコン名または画像 URL(Icon の name と同等)string-
icon-prefix🔧 アイコンクラス接頭辞(Icon の class-prefix と同等)stringvan-icon
dot🔴 右上に赤いドットを表示booleanfalse
badge🏆 右上バッジの内容number | string-
badge-props⚙️ バッジの属性(Badge に透過)BadgeProps-
url🔗 クリック時のリンク先string-
to🛣️ クリック時の遷移先(Vue Router の tostring | object-
replace🔄 遷移時に履歴を置き換えbooleanfalse

TabbarItem Slots

名前説明引数
icon🎨 カスタムアイコンactive: boolean

型定義 📝

TypeScript プロジェクト向けに以下の型定義を提供:

ts
import type { TabbarProps, TabbarItemProps } from 'vant';

テーマカスタマイズ 🎨

スタイル変数

以下の CSS 変数でスタイルをカスタマイズできます。詳しくは ConfigProvider コンポーネント

名称デフォルト説明
--van-tabbar-height50px📏 タブバー高さ
--van-tabbar-z-index1📐 タブバーのレイヤー
--van-tabbar-backgroundvar(--van-background-2)🎭 背景色
--van-tabbar-item-font-sizevar(--van-font-size-sm)📝 文字サイズ
--van-tabbar-item-text-colorvar(--van-text-color)🖋️ 文字色
--van-tabbar-item-active-colorvar(--van-primary-color)✨ アクティブ色
--van-tabbar-item-active-backgroundvar(--van-background-2)🌟 アクティブ背景色
--van-tabbar-item-line-height1📐 行の高さ
--van-tabbar-item-icon-size22px🎨 アイコンサイズ
--van-tabbar-item-icon-margin-bottomvar(--van-padding-base)📏 アイコン下余白

関連ドキュメント 📚

ナビゲーションコンポーネント 🧭

表示コンポーネント 📱

フィードバックコンポーネント 💬

ツールコンポーネント 🔧

Vant に基づく企業向けモバイルソリューション