最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Vue3+UniApp在單個(gè)頁(yè)面實(shí)現(xiàn)固定TabBar的多種方式

 更新時(shí)間:2025年03月21日 08:32:01   作者:碼農(nóng)研究僧  
tabBar 是移動(dòng)端應(yīng)用常見(jiàn)的頁(yè)面效果,用于實(shí)現(xiàn)多頁(yè)面的快速切換,本文給大家介紹了如何基于Vue3+UniApp在單個(gè)頁(yè)面實(shí)現(xiàn)固定TabBar的多種方式,需要的朋友可以參考下

在 UniApp 開(kāi)發(fā)中,tabBar 通常是通過(guò) pages.json 配置的,適用于整個(gè)應(yīng)用的全局導(dǎo)航

然而,在某些場(chǎng)景下,我們可能需要只在特定的頁(yè)面展示 tabBar,而不會(huì)影響其他頁(yè)面的布局。這就需要使用 自定義 tabBar,可以通過(guò) view 組件、uni-segmented-control 組件或 uni-nav-bar 組件等方式來(lái)實(shí)現(xiàn)

以下是幾種適用場(chǎng)景:

  • 局部頁(yè)面導(dǎo)航:
    例如,一個(gè)訂單管理頁(yè)面,用戶可以在 “進(jìn)行中” 和 “已完成” 之間切換,而不影響全局 tabBar

  • 底部固定的二級(jí)導(dǎo)航:
    例如,在 “記錄” 頁(yè)面,提供 “待審核” 和 “已審核” 選項(xiàng),方便用戶切換,而不會(huì)影響其他頁(yè)面

  • 頂部導(dǎo)航欄的切換:
    適用于不適合使用底部 tabBar 的場(chǎng)景,如數(shù)據(jù)管理頁(yè)面,用戶可以在 “待審核” 和 “已審核” 之間切換

方法適用場(chǎng)景說(shuō)明
方法 1:自定義 view tabBar僅在某個(gè)頁(yè)面底部適用于特定頁(yè)面,不會(huì)影響全局 tabBar
方法 2:uni-segmented-control輕量級(jí)頁(yè)面切換適用于簡(jiǎn)單的 Tab 選項(xiàng),不會(huì)影響布局
方法 3:uni-nav-bar頂部導(dǎo)航切換適用于帶頂部導(dǎo)航的 UI

1. 自定義 view

<template>
  <view class="container">


    <!-- 固定底部的 tabBar -->
    <view class="fixed-tabbar">
      <view class="tab-item" :class="{ active: currentTab === 0 }" @click="currentTab = 0">
        <text>測(cè)試A</text>
      </view>
      <view class="tab-item" :class="{ active: currentTab === 1 }" @click="currentTab = 1">
        <text>測(cè)試B</text>
      </view>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      currentTab: 0, // 當(dāng)前選中的 tab
    };
  }
};
</script>

<style scoped>
.container {
  display: flex;
  flex-direction: column;
  height: 100vh;
}

.content {
  flex: 1;
  overflow-y: auto; /* 讓內(nèi)容可以滾動(dòng) */
  padding-bottom: 60px; /* 避免被底部 tabBar 遮擋 */
}

.fixed-tabbar {
  position: fixed;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 50px;
  display: flex;
  justify-content: space-around;
  align-items: center;
  background-color: #fff;
  border-top: 1px solid #ddd;
}

.tab-item {
  flex: 1;
  text-align: center;
  padding: 10px;
  font-size: 14px;
  color: #666;
}

.tab-item.active {
  color: #007AFF;
  font-weight: bold;
}
</style>

截圖如下:

fixed-tabbar 采用 position: fixed; bottom: 0;,始終固定在頁(yè)面底部
使用 currentTab 變量控制當(dāng)前選中的 tab,并根據(jù) active 類名高亮
padding-bottom: 60px; 避免頁(yè)面內(nèi)容被 tabBar 遮擋

2. uni-segmented-control

以輕量級(jí)方式切換不同的頁(yè)面內(nèi)容,不需要固定的底部 tabBar

<template>
  <view>
    <!-- 頂部 Tab 切換 -->
    <uni-segmented-control
      :current="currentTab"
      :values="['測(cè)試A', '測(cè)試B']"
      @clickItem="switchTab"
    />

    <!-- 提柜記錄 -->
    <view v-if="currentTab === 0">
      <uni-card title="測(cè)試A">
        <text>這里是測(cè)試A...</text>
      </uni-card>
    </view>

    <!-- 殘損單記錄 -->
    <view v-else>
      <uni-card title="測(cè)試B">
        <text>這里是測(cè)試B...</text>
      </uni-card>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      currentTab: 0 // 默認(rèn)選中第一個(gè)
    };
  },
  methods: {
    switchTab(index) {
      this.currentTab = index;
    }
  }
};
</script>

截圖如下:

uni-segmented-control 提供頂部 tab,點(diǎn)擊時(shí) @clickItem 觸發(fā) switchTab 進(jìn)行切換

僅 currentTab === 0 時(shí)展示

適用于無(wú)需固定底部導(dǎo)航欄的場(chǎng)景,如數(shù)據(jù)篩選切換

3. uni-nav-bar

頂部導(dǎo)航,在標(biāo)題欄左右提供不同的 Tab 切換按鈕

<template>
  <view>
    <!-- 自定義頂部 Tab -->
    <uni-nav-bar >
      <template v-slot:left>
        <view @click="switchTab(0)" :class="{ active: currentTab === 0 }">測(cè)試A</view>
      </template>
      <template v-slot:right>
        <view @click="switchTab(1)" :class="{ active: currentTab === 1 }">測(cè)試B</view>
      </template>
    </uni-nav-bar>

    <!-- 頁(yè)面內(nèi)容 -->
    <view v-if="currentTab === 0">
      <uni-card title="測(cè)試A">
        <text>這里是測(cè)試A...</text>
      </uni-card>
    </view>

    <view v-else>
      <uni-card title="測(cè)試B">
        <text>這里是測(cè)試B...</text>
      </uni-card>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      currentTab: 0
    };
  },
  methods: {
    switchTab(index) {
      this.currentTab = index;
    }
  }
};
</script>

<style scoped>
.active {
  font-weight: bold;
  color: #007AFF;
}
</style>

uni-nav-bar 作為導(dǎo)航欄,在左右 slot 里添加點(diǎn)擊切換的按鈕。

switchTab 控制當(dāng)前顯示的內(nèi)容

以上就是基于Vue3+UniApp在單個(gè)頁(yè)面實(shí)現(xiàn)固定TabBar的多種方式的詳細(xì)內(nèi)容,更多關(guān)于Vue3 UniApp固定TabBar的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue3中的reactive、readonly和shallowReactive使用詳解

    vue3中的reactive、readonly和shallowReactive使用詳解

    在 Vue3 中,可以使用 shallowReactive 函數(shù)創(chuàng)建一個(gè)淺層響應(yīng)式對(duì)象,它接收一個(gè)普通對(duì)象作為參數(shù),返回一個(gè)淺層響應(yīng)式代理對(duì)象,本文給大家介紹vue3中的reactive、readonly和shallowReactive使用,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • Vue生命周期示例詳解

    Vue生命周期示例詳解

    這篇文章主要為大家詳細(xì)介紹了Vue生命周期的示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • vue實(shí)現(xiàn)拖拽排序效果

    vue實(shí)現(xiàn)拖拽排序效果

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)拖拽排序效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • vue彈窗組件的使用(傳值),以及彈窗只能觸發(fā)一次的問(wèn)題

    vue彈窗組件的使用(傳值),以及彈窗只能觸發(fā)一次的問(wèn)題

    這篇文章主要介紹了vue彈窗組件的使用(傳值),以及彈窗只能觸發(fā)一次的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • vue獲取當(dāng)前路由的五種方式示例代碼

    vue獲取當(dāng)前路由的五種方式示例代碼

    這篇文章主要給大家介紹了關(guān)于vue獲取當(dāng)前路由的五種方式,文中通過(guò)代碼示例介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-08-08
  • Vue如何解決兄弟組件之間傳值問(wèn)題

    Vue如何解決兄弟組件之間傳值問(wèn)題

    這篇文章主要介紹了Vue如何解決兄弟組件之間傳值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • el-date-picker選中獲取值實(shí)現(xiàn)方式

    el-date-picker選中獲取值實(shí)現(xiàn)方式

    在ElementUI中使用el-date-picker組件獲取用戶選中的日期值,可以通過(guò)v-model雙向數(shù)據(jù)綁定或者監(jiān)聽(tīng)change事件來(lái)實(shí)現(xiàn),需要注意的是,ElementUI可能不支持Vue3,需要使用ElementPlus或其他兼容Vue3的UI庫(kù)
    2025-11-11
  • vue+koa2實(shí)現(xiàn)session、token登陸狀態(tài)驗(yàn)證的示例

    vue+koa2實(shí)現(xiàn)session、token登陸狀態(tài)驗(yàn)證的示例

    這篇文章主要介紹了vue+koa2實(shí)現(xiàn)session、token登陸狀態(tài)驗(yàn)證的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 一文徹底搞懂Vue的MVVM響應(yīng)式原理

    一文徹底搞懂Vue的MVVM響應(yīng)式原理

    這篇文章主要介紹了一文徹底搞懂Vue的MVVM響應(yīng)式原理,vue則是采用發(fā)布者-訂閱者模式,通過(guò)Object.defineProperty()來(lái)劫持各個(gè)屬性的getter和setter,在數(shù)據(jù)變動(dòng)時(shí)發(fā)布消息給訂閱者,觸發(fā)相應(yīng)的監(jiān)聽(tīng)回調(diào)
    2022-06-06
  • Vue Router路由無(wú)法跳轉(zhuǎn)問(wèn)題匯總

    Vue Router路由無(wú)法跳轉(zhuǎn)問(wèn)題匯總

    這篇文章主要介紹了Vue Router路由無(wú)法跳轉(zhuǎn)問(wèn)題匯總,在這里我整理了部分Vue Router路由無(wú)法跳轉(zhuǎn)問(wèn)題,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09

最新評(píng)論

凤山县| 吴忠市| 达尔| 六枝特区| 航空| 东平县| 河东区| 宕昌县| 凭祥市| 济源市| 蕲春县| 西昌市| 沅陵县| 琼结县| 平原县| 富川| 堆龙德庆县| 咸阳市| 镇远县| 溧阳市| 芦山县| 杭锦旗| 长寿区| 聂拉木县| 望江县| 都匀市| 穆棱市| 新和县| 公主岭市| 二连浩特市| 潮安县| 鄱阳县| 晋州市| 罗源县| 金川县| 象州县| 尚义县| 绍兴市| 沧州市| 祁门县| 喀什市|