Vant Tab 標(biāo)簽頁(yè)

2022-05-31 13:39 更新

引入

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

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

代碼演示

基礎(chǔ)用法

通過(guò)v-model綁定當(dāng)前激活標(biāo)簽對(duì)應(yīng)的索引值,默認(rèn)情況下啟用第一個(gè)標(biāo)簽

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

通過(guò)名稱匹配

在標(biāo)簽指定name屬性的情況下,v-model的值為當(dāng)前標(biāo)簽的name

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

標(biāo)簽欄滾動(dòng)

標(biāo)簽數(shù)量超過(guò) 4 個(gè)時(shí),標(biāo)簽欄可以在水平方向上滾動(dòng),切換時(shí)會(huì)自動(dòng)將當(dāng)前標(biāo)簽居中

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

禁用標(biāo)簽

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

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

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

樣式風(fēng)格

Tab支持兩種樣式風(fēng)格:linecard,默認(rèn)為line樣式,可以通過(guò)type屬性修改樣式風(fēng)格

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

點(diǎn)擊事件

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

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

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

粘性布局

通過(guò)sticky屬性可以開(kāi)啟粘性布局,粘性布局下,當(dāng) Tab 滾動(dòng)到頂部時(shí)會(huì)自動(dòng)吸頂

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

自定義標(biāo)簽

通過(guò) title 插槽可以自定義標(biāo)簽內(nèi)容

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

切換動(dòng)畫

通過(guò)animated屬性可以開(kāi)啟切換標(biāo)簽內(nèi)容時(shí)的轉(zhuǎn)場(chǎng)動(dòng)畫

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

滑動(dòng)切換

通過(guò)swipeable屬性可以開(kāi)啟滑動(dòng)切換標(biāo)簽頁(yè)

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

滾動(dòng)導(dǎo)航

通過(guò)scrollspy屬性可以開(kāi)啟滾動(dòng)導(dǎo)航模式,該模式下,內(nèi)容將會(huì)平鋪展示

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

API

Tabs Props

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

Tab Props

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

Tabs Events

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

Tabs 方法

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

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

Tabs Slots

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

Tab Slots

名稱 說(shuō)明
default 標(biāo)簽頁(yè)內(nèi)容
title 自定義標(biāo)題,不支持動(dòng)態(tài)渲染


實(shí)例演示

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)