Vant Tab 標簽頁

2022-05-31 13:39 更新

引入

import Vue from 'vue';
import { Tab, Tabs } from 'vant';

Vue.use(Tab);
Vue.use(Tabs);

代碼演示

基礎(chǔ)用法

通過v-model綁定當前激活標簽對應(yīng)的索引值,默認情況下啟用第一個標簽

<van-tabs v-model="active">
  <van-tab title="標簽 1">內(nèi)容 1</van-tab>
  <van-tab title="標簽 2">內(nèi)容 2</van-tab>
  <van-tab title="標簽 3">內(nèi)容 3</van-tab>
  <van-tab title="標簽 4">內(nèi)容 4</van-tab>
</van-tabs>
export default {
  data() {
    return {
      active: 2
    };
  }
}

通過名稱匹配

在標簽指定name屬性的情況下,v-model的值為當前標簽的name

<van-tabs v-model="activeName">
  <van-tab title="標簽 1" name="a">內(nèi)容 1</van-tab>
  <van-tab title="標簽 2" name="b">內(nèi)容 2</van-tab>
  <van-tab title="標簽 3" name="c">內(nèi)容 3</van-tab>
</van-tabs>
export default {
  data() {
    return {
      activeName: 'a'
    };
  }
}

標簽欄滾動

標簽數(shù)量超過 4 個時,標簽欄可以在水平方向上滾動,切換時會自動將當前標簽居中

<van-tabs>
  <van-tab v-for="index in 8" :title="'標簽 ' + index">
    內(nèi)容 {{ index }}
  </van-tab>
</van-tabs>

禁用標簽

設(shè)置disabled屬性即可禁用標簽。如果需要監(jiān)聽禁用標簽的點擊事件,可以在van-tabs上監(jiān)聽disabled事件

<van-tabs @disabled="onClickDisabled">
  <van-tab title="標簽 1">內(nèi)容 1</van-tab>
  <van-tab title="標簽 2" disabled>內(nèi)容 2</van-tab>
  <van-tab title="標簽 3">內(nèi)容 3</van-tab>
</van-tabs>
import { Toast } from 'vant';

export default {
  methods: {
    onClickDisabled(name, title) {
      Toast(name + '已被禁用');
    }
  }
};

樣式風格

Tab支持兩種樣式風格:linecard,默認為line樣式,可以通過type屬性修改樣式風格

<van-tabs type="card">
  <van-tab title="標簽 1">內(nèi)容 1</van-tab>
  <van-tab title="標簽 2">內(nèi)容 2</van-tab>
  <van-tab title="標簽 3">內(nèi)容 3</van-tab>
</van-tabs>

點擊事件

可以在van-tabs上綁定click事件,事件傳參為標簽對應(yīng)的索引和標題

<van-tabs @click="onClick">
  <van-tab title="標簽 1">內(nèi)容 1</van-tab>
  <van-tab title="標簽 2">內(nèi)容 2</van-tab>
</van-tabs>
import { Toast } from 'vant';

export default {
  methods: {
    onClick(name, title) {
      Toast(title);
    }
  }
};

粘性布局

通過sticky屬性可以開啟粘性布局,粘性布局下,當 Tab 滾動到頂部時會自動吸頂

<van-tabs v-model="active" sticky>
  <van-tab v-for="index in 4" :title="'選項 ' + index">
    內(nèi)容 {{ index }}
  </van-tab>
</van-tabs>

自定義標簽

通過 title 插槽可以自定義標簽內(nèi)容

<van-tabs v-model="active">
  <van-tab v-for="index in 2">
    <div slot="title">
      <van-icon name="more-o" />選項
    </div>
    內(nèi)容 {{ index }}
  </van-tab>
</van-tabs>

切換動畫

通過animated屬性可以開啟切換標簽內(nèi)容時的轉(zhuǎn)場動畫

<van-tabs v-model="active" animated>
  <van-tab v-for="index in 4" :title="'選項 ' + index">
    內(nèi)容 {{ index }}
  </van-tab>
</van-tabs>

滑動切換

通過swipeable屬性可以開啟滑動切換標簽頁

<van-tabs v-model="active" swipeable>
  <van-tab v-for="index in 4" :title="'選項 ' + index">
    內(nèi)容 {{ index }}
  </van-tab>
</van-tabs>

滾動導航

通過scrollspy屬性可以開啟滾動導航模式,該模式下,內(nèi)容將會平鋪展示

<van-tabs v-model="active" scrollspy sticky>
  <van-tab v-for="index in 8" :title="'選項 ' + index">
    內(nèi)容 {{ index }}
  </van-tab>
</van-tabs>

API

Tabs Props

參數(shù) 說明 類型 默認值
v-model 綁定當前選中標簽的標識符 number | string 0
type 樣式風格類型,可選值為card string line
color 標簽主題色 string #ee0a24
background 標簽欄背景色 string white
duration 動畫時間,單位秒 number | string 0.3
line-width 底部條寬度,默認單位px number | string auto
line-height 底部條高度,默認單位px number | string 3px
animated 是否開啟切換標簽內(nèi)容時的轉(zhuǎn)場動畫 boolean false
border 是否顯示標簽欄外邊框,僅在type="line"時有效 boolean true
ellipsis 是否省略過長的標題文字 boolean true
sticky 是否使用粘性定位布局 boolean false
swipeable 是否開啟手勢滑動切換 boolean false
lazy-render 是否開啟延遲渲染(首次切換到標簽時才觸發(fā)內(nèi)容渲染) boolean true
scrollspy v2.3.0 是否開啟滾動導航 boolean false
offset-top 粘性定位布局下與頂部的最小距離,單位px number | string 0
swipe-threshold 滾動閾值,標簽數(shù)量超過閾值時開始橫向滾動 number | string 4
title-active-color 標題選中態(tài)顏色 string -
title-inactive-color 標題默認態(tài)顏色 string -

Tab Props

參數(shù) 說明 類型 默認值
title 標題 string -
disabled 是否禁用標簽 boolean false
dot v2.3.0 是否在標題右上角顯示小紅點 boolean false
info v2.3.0 標題右上角徽標的內(nèi)容 number | string -
name v2.0.6 標簽名稱,作為匹配的標識符 number | string 標簽的索引值
url v2.2.1 點擊后跳轉(zhuǎn)的鏈接地址 string -
to v2.2.1 點擊后跳轉(zhuǎn)的目標路由對象,同 vue-router 的 to 屬性 string | object -
replace v2.2.1 是否在跳轉(zhuǎn)時替換當前頁面歷史 boolean false
title-style v2.2.14 自定義標題樣式 any -

Tabs Events

事件名 說明 回調(diào)參數(shù)
click 點擊標簽時觸發(fā) name:標識符,title:標題
change 當前激活的標簽改變時觸發(fā) name:標識符,title:標題
disabled 點擊被禁用的標簽時觸發(fā) name:標識符,title:標題
rendered v2.3.0 標簽內(nèi)容首次渲染時觸發(fā)(僅在開啟延遲渲染后觸發(fā)) name:標識符,title:標題
scroll 滾動時觸發(fā),僅在 sticky 模式下生效 { scrollTop: 距離頂部位置, isFixed: 是否吸頂 }

Tabs 方法

通過 ref 可以獲取到 Tabs 實例并調(diào)用實例方法,詳見 組件實例方法

方法名 說明 參數(shù) 返回值
resize 外層元素大小變化后,可以調(diào)用此方法來觸發(fā)重繪 - void

Tabs Slots

名稱 說明
nav-left 標題左側(cè)內(nèi)容
nav-right 標題右側(cè)內(nèi)容

Tab Slots

名稱 說明
default 標簽頁內(nèi)容
title 自定義標題,不支持動態(tài)渲染


實例演示

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號