首页 > 编程语言 >uniapp 实现小程序中自定义tabBar

uniapp 实现小程序中自定义tabBar

时间:2022-11-15 15:36:32浏览次数:52  
标签:uniapp tabBar 自定义 index text bizhi txy pages png

uniapp 实现小程序中自定义tabBar 的方法

第一种方式: page.json中配置

"tabBar": {
  "color": "#7A7E83",
  "selectedColor": "#007AFF",
  "borderStyle": "black",
  "backgroundColor": "#F8F8F8",
  "fontSize": "12px",
  "spacing": "5px",
  "height": "50px",
  "list" : [
    {
      "pagePath": "pages/index/index",
      "text": "头像",
      "iconPath": "static/down.png",
      "selectedIconPath": "static/down.png"
    },
    {
      "pagePath": "pages/bizhi/index",
      "text": "壁纸",
      "iconPath": "static/bizhi.png",
      "selectedIconPath": "static/bizhi.png"
    },
    {
      "pagePath": "pages/zhenjian/index",
      "text": "证件照",
      "iconPath": "static/zhenjian.png",
      "selectedIconPath": "static/zhenjian.png"
    },
    {
      "pagePath": "pages/zhenjian/index",
      "text": "头像易",
      "iconPath": "static/txy.png",
      "selectedIconPath": "static/txy.png"
    }
  ]
},

定义的内容需要在pages 中声明了。

这种方式定义比较快速,简单。
如果需要根据用户权限,或者在tabBar 上自定义一些逻辑,需要使用自定义的内容

第二种方式 自定义内容

<template>
  <view class="tab-bar">
    <view v-for="(item,index) in list" :key="index" class="tab-bar-item" @click="switchTab(item, index)">
      <image class="tab_img" :src="selected === index ? item.selectedIconPath : item.iconPath"></image>
      <view class="tab_text" :style="{color: selected === index ? selectedColor : color}">{{item.text}}</view>
    </view>
  </view>
</template>
<script>
  export default {
    props: {
      selected: { // 当前选中的tab index
          type: Number,
          default: 0
      },
    },
    data() {
      return {
        color: "#333333",
        selectedColor: "#d4237a",
        list: [
          {
            "pagePath": "pages/index/index",
            "text": "头像",
            "iconPath": "https://bj.bcebos.com/txy-dev/txy/main/down.png",
            "selectedIconPath": "https://bj.bcebos.com/txy-dev/txy/main/down.png"
          },
          {
            "pagePath": "pages/bizhi/index",
            "text": "壁纸",
            "iconPath": "https://bj.bcebos.com/txy-dev/txy/main/bizhi.png",
            "selectedIconPath": "https://bj.bcebos.com/txy-dev/txy/main/bizhi.png"
          },
          {
            "pagePath": "pages/bizhi/index",
            "text": "证件照",
            "iconPath": "https://bj.bcebos.com/txy-dev/txy/main/zhenjian.png",
            "selectedIconPath": "https://bj.bcebos.com/txy-dev/txy/main/zhengjian.png"
          },
          {
            "pagePath": "pages/bizhi/index",
            "text": "头像易",
            "iconPath": "https://bj.bcebos.com/txy-dev/txy/main/txy.png",
            "selectedIconPath": "https://bj.bcebos.com/txy-dev/txy/main/txy.png"
          }
        ]
      }
    },
    methods: {
      switchTab(item, index) {
        console.log("item", item)
        console.log("index", index)
        let url = item.pagePath;
        // 对应患者和医生的首页
        if (index == 0) {
            url = "/pages/index/index"
        }
        // 对应患者和医生的我的页面
        if (index == 1) {
            url = "/pages/bizhi/index"
        }
        if (index == 2) {
          uni.navigateToMiniProgram({
            appId: 'wxac06eaffe466baa3',
          })
          // wxacd92e691aba23dd
          // wxac06eaffe466baa3
          return
        }
        if (index == 3) {
          uni.navigateToMiniProgram({
            appId: 'wxacd92e691aba23dd',
          })
          // wxacd92e691aba23dd
          // wxac06eaffe466baa3
          return
        }
        uni.switchTab({
            url
        })
      }
    }
  }
</script>
 
<style lang="less">
  .tab-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    height: 100rpx;
    background: white;
    display: flex;
    justify-content: center;
    align-items: center;
    padding-bottom: env(safe-area-inset-bottom); // 适配iphoneX的底部
    .tab-bar-item {
      flex: 1;
      text-align: center;
      display: flex;
      justify-content: center;
      align-items: center;
      flex-direction: column;

      .tab_img {
          width: 37rpx;
          height: 41rpx;
      }

      .tab_text {
          font-size: 20rpx;
          margin-top: 9rpx;
      }
    }
  }
</style>

在需要用到tabBar 的页面 引用。 并且需要关闭第一种方法中默认的

onShow() {
  uni.hideTabBar({
    animation: false
  })
},

下面时我的自定义tabBar 效果,欢迎扫描体验

制作头像小程序

标签:uniapp,tabBar,自定义,index,text,bizhi,txy,pages,png
From: https://www.cnblogs.com/buxiugangzi/p/16892539.html

相关文章

  • leaflet 加载高德地图自定义样式
    最近项目需求,需要使用leaflet封装成一个vue组件,涉及功能主要有高德自定义样式地图封装为leaflet底图图层、自定义坐标系、topjson省市区街道下钻、线面区域热力层、飞线、......
  • umi配置chainWebpack,使用自定义loader----jsx-px2rem
    前言虽然云谦大佬在github上说了,umi本身的配置已经很完善了,但是肯定满足不了所有人各种各样的奇葩需求。。。比如今天说的将jsx中的style里,将px转换为rem。 umi本身提......
  • java poi导出excel单元格设置自定义背景颜色(任意颜色)
    转自:http://t.csdn.cn/QHfUU//创建一个workbook对象Workbookworkbook=newXSSFWorkbook();//创建一个sheet对象Sheetsheet=workbook.createSheet();//创......
  • SAP ABAP FICO FAGLL03H CODING BLOCK新增自定义字段
    1、SGLPOS_N_GL_CT、SGLPOS_N_CT两个结构新增自定义字段  2、执行t-code:HDBVIEWS  3、实施增强 FAGL_LIB  4、使用selectdata方法 5、代码示例:......
  • 自定义一个python pip包
    新建一个目录mkdirexample基本说明文件README.rstLICENSEsetup.cfgsetup.pyMANIFEST.indocsexample/README.rst点击查看代码=====example=====Pollsi......
  • 自定义定时器
    自定义定时器#include<iostream>#include<sys/epoll.h>#include<chrono>#include<functional>#include<memory>#include<set>int64_tgid{0};structNodeBa......
  • 【AGC】远程配置如何传入自定义属性
    ​背景:现在AGC远程配置端侧服务提供的SDK支持传入自定义属性获取和更新云端配置数据了。下面将通过一个demo集成远程配置SDK来实现这一功能。 集成准备1.在AGC创建工......
  • 1710. 卡车上的最大单元数 ----- 贪心算法,自定义sort排序
    请你将一些箱子装在一辆卡车上。给你一个二维数组boxTypes,其中boxTypes[i]=[numberOfBoxesi,numberOfUnitsPerBoxi]:numberOfBoxesi是类型i的箱子的数量。numb......
  • JavaScript自定义数据类型判断函数
    functionjudgeType(ele){letres=typeofele;if(res==="object"){//短路表达式,第一个成立则返回第二个的值,第一个不成立,则返回第一个的值......
  • uniapp 小程序接入51LA统计数据
    mpa-stat-config.js文件:exports.appKey='7********6'//请在此行填写从51LA小程序统计后台获取的appkeyexports.ignoreDev=true//默认关闭在开发模式下向服务器发......