微信小程序——自定义底部tabBar

这篇具有很好参考价值的文章主要介绍了微信小程序——自定义底部tabBar。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

 实现步骤

1、配置信息

2、添加代码文件。

 3、在该目录下编写代码即可。

二、在app.json里面添加tabBar配置

三.、在custom-tab-bar添加配置

1. 在custom-tab-bar创建如下目录

2.给index.wxml添加tabBar的结构代码  

3. 给index.js 添加数据配置 和 事件方法

4. 给index.wxss 添加样式

四、tabbar图标切换 要点击两次才能有选中状态

五 原生wxtabBar的设置(右上角红点和消息)


 实现步骤

微信小程序自定义底部tab组件,微信小程序,小程序

参考官方网站,自定义tabBar

自定义 tabBar | 微信开放文档

1、配置信息

需要在app.json中设置一个属性custom,为true ,代表全局开启自定义tab

微信小程序自定义底部tab组件,微信小程序,小程序

 微信小程序自定义底部tab组件,微信小程序,小程序

注意:当我们设置了custom属性之后,那么tabBar下面的list数组是否可以删了呢?

答:不可以,文档里面已经明确表示是不可以删的,需要保持完整配置项以及低版本里面可以不适用自定义tabBar,因此需要兼容、

微信小程序自定义底部tab组件,微信小程序,小程序

2、添加代码文件。

这个目录结构是固定的 ,必须要在项目根目录创建一个文件夹: custom-tab-bar,以及对应的文件。

微信小程序自定义底部tab组件,微信小程序,小程序

第一步骤中的custom设置为true,小程序就可以自动读取该目录下的index组件,把该组件当做tab渲染出来

 3、在该目录下编写代码即可。

 微信小程序自定义底部tab组件,微信小程序,小程序

二、在app.json里面添加tabBar配置

"pages":[
    "pages/index/index",
    "pages/logs/logs",
    "pages/goods/index"
  ],
 "tabBar": {
    "custom": true,
    "color": "#000000",
    "selectedColor": "#000000",
    "backgroundColor": "#000000",
    "list": [{
      "pagePath": "pages/index/index",
      "text": "首页"
    }, {
      "pagePath": "pages/goods/index",
      "text": "商品"
    }]
  }

三.、在custom-tab-bar添加配置

1. 在custom-tab-bar创建如下目录

custom-tab-bar/index.js
custom-tab-bar/index.json
custom-tab-bar/index.wxml
custom-tab-bar/index.wxss

2.给index.wxml添加tabBar的结构代码  

1、为什么canvas组件总是会在最上层?

由于canvas组件是原生组件,原生组件的层级是最高的,所以页面中的其他组件无论设置 z-index 为多少,都无法盖在原生组件上。

2、 如何解决canvas层级最高问题?

方法一:用原生组件覆盖原生组件

为了解决原生组件层级最高的限制。小程序专门提供了 cover-view 和 cover-image 组件,可以覆盖在部分原生组件上面。这两个组件也是原生组件,但是使用限制与其他原生组件有所不同。
比如:cover-view只支持嵌套 cover-viewcover-imagebutton

<!--miniprogram/custom-tab-bar/index.wxml-->
<cover-view class="tab-bar">
  <cover-view class="tab-bar-border"></cover-view>
  <cover-view wx:for="{{list}}" wx:key="index" class="tab-bar-item" data-path="{{item.pagePath}}" data-index="{{index}}" bindtap="switchTab">
    <cover-image src="{{selected === index ? item.selectedIconPath : item.iconPath}}"></cover-image>
    <cover-view style="color: {{selected === index ? selectedColor : color}}">{{item.text}}</cover-view>
  </cover-view>
</cover-view>

3. 给index.js 添加数据配置 和 事件方法

Component({
  data: {
    selected: 0,
    color: "#7A7E83",
    selectedColor: "#3cc51f",
    list: [{
      pagePath: "/pages/index/index",
      iconPath: "/image/home2_icon.png",
      selectedIconPath: "/image/home1_icon.png",
      text: "首页"
    }, {
      pagePath: "/pages/goods/index",
      iconPath: "/image/readTrain2_icon.png",
      selectedIconPath: "/image/readTrain1_icon.png",
      text: "商品"
    }]
  },
  attached() {
  },
  methods: {
    switchTab(e) {
      console.log("执行跳转",e);
      const data = e.currentTarget.dataset
      const url = data.path
      wx.switchTab({url})
      this.setData({
        selected: data.index
      })
    }
  }
})

4. 给index.wxss 添加样式

/* custom-tab-bar/index.wxss */
.tab-bar {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  height: 48px;
  background: white;
  display: flex;
  padding-bottom: env(safe-area-inset-bottom);
}
 
.tab-bar-border {
  background-color: rgba(0, 0, 0, 0.33);
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 1px;
  transform: scaleY(0.5);
}
 
.tab-bar-item {
  flex: 1;
  text-align: center;
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
}
 
.tab-bar-item cover-image {
  width: 27px;
  height: 27px;
}
 
.tab-bar-item cover-view {
  font-size: 10px;
}

此时,通过点击切换页面,就可以实现

=》如果在选择点击切换按钮时,页面没根据tabBar进行切换,问题很可能能在custom-tab-bar目录的index.js 的list数据配置的页面路径,一定要/开头,如/pages/goods/index,这才能找到页面。

四、tabbar图标切换 要点击两次才能有选中状态

在`/pages/index目录的index.js文件,的onShow生命周期方法,添加如下代码

onShow() {
    if (typeof this.getTabBar === 'function' &&
      this.getTabBar()) {
      this.getTabBar().setData({
        //唯一标识(其它设置不同的整数)  
        selected: 0
      })
    }
  },

五 原生wxtabBar的设置(右上角红点和消息)

wx.setTabBarBadge(Object object)  为 tabBar 某一项的右上角添加文本

wx.removeTabBarBadge(Object object)  移除 tabBar 某一项右上角的文本文章来源地址https://www.toymoban.com/news/detail-562224.html

微信小程序自定义底部tab组件,微信小程序,小程序

  tabBarTitle(num) {
    console.log(num, 'numnumnumnumnum');
    if (num == '') {
      wx.removeTabBarBadge({//移除tabbar右上角的文本
        index: 1,//tabbar下标
      })
    } else {
      wx.setTabBarBadge({//tabbar右上角添加文本
        index: 1,//tabbar下标
        text: num.toString() //显示的内容,必须为字符串
      })
    }
  }

到了这里,关于微信小程序——自定义底部tabBar的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序自定义导航栏机型适配--底部Tabbar--view高度--底部按钮适配

    自定义微信小程序头部导航栏 自定义微信小程序头部导航栏,有几种方式 方式一 定义此方法后,头部的导航栏会去掉,导航栏下的元素会直接向上移动到原导航栏的位置,可以再app.json配置成全局沉浸式导航栏,以及在单页面配置沉浸式导航栏。 方式二 使用组件 这里使用

    2024年02月02日
    浏览(55)
  • 微信小程序 根据登录后的角色权限 渲染底部tabbar--自定义渲染tabbar

    微信小程序模拟登录后 根据不同角色权限 渲染底部tabbar (底部tabbar 用的是vant ui 提供的组件)  1.权限一: 拥有的底部栏如图 1.2 权限二: 拥有的底部栏 如图 1.3 定义全局属性用于存储底部的tabbar渲染 一:  首先在全局文件App.json 配置tabbar (最少2个 最多5个),并且配置页

    2024年02月02日
    浏览(53)
  • 小程序Taro框架 自定义底部Tabbar,处理自定义Tab栏切换卡顿、闪烁

    最近在用Taro框架开发一个小程序,有一个自定义底部Tabbar的需求,最终效果如下  这页是我第一次接触自定义小程序底部Tabbar,所有第一选择必然是相看官方文档:微信小程序自定义 Tabbar | Taro 文档 ( 如果第一次做,请一定要仔细看这个文档 ) 按照文档正常配置app.confi

    2024年03月21日
    浏览(43)
  • uniapp通过custom-tab-bar 自定义tabbar导航栏(主要用于微信小程序)

    这个自定义的tabbar是用于微信小程序方面的 开始: uniapp文档搜索自定义tabbar,并找到这个 第一步: 根目录创建 custom-tab-bar 文件,并在page.json文件里面tabbar设置项中添加 custom 属性,并设置为 true,list数组不要清空,把你得tabbar页面也写上去,他需要和你得自定义得tabbar那个数组对照

    2024年04月09日
    浏览(59)
  • 微信小程序子页面自定义tabbar组件

    有时候微信小程序会遇到代码合并,就比如把B小程序代码迁移到A小程序,要使得B作为A小程序的一个子页面子功能。因为本身小程序都有tabbar,原来B也有,这时候就要给B子功能自定义一个tabbar底部导航栏。(注意,这个不是微信小程序自定义tabBar,不需要app.json中设置一个

    2024年02月08日
    浏览(51)
  • uniapp&&微信小程序底部弹窗自定义组件

    个人项目地址: SubTopH前端开发个人站   (自己开发的前端功能和UI组件,一些有趣的小功能,感兴趣的伙伴可以访问,欢迎提出更好的想法,私信沟通,网站属于静态页面) SubTopH前端开发个人站 https://subtop.gitee.io/subtoph.github.io/#/home  基础弹窗效果组件 在页面使用 父组件

    2024年02月14日
    浏览(55)
  • uniapp 微信小程序使用uview u-tabbar组件自定义tabbar

    1.在components文件下面新建TabBar.vue组件, 使用uview的u-tabbar组件进行二次封装; u-tabbar组件中value取当前匹配项的name, 一般从父组件传过来即可; 在u-tabbar-item标签内可以使用插槽 slot=\\\'inactive-icon\\\'(选中的图标)和slot=\\\'inactive-icon\\\'(未选中的图标)自定义图片样式 u-tabbar组件默认已经为i

    2024年02月13日
    浏览(74)
  • ⑬微信小程序--》tabBar底部栏

    tabBar 是移动端应用常见的页面效果,用于实现多页面的快速切换。小程序中通常将其分成两类,分别是:底部 tabBar 和 顶部 tabBar  简言之 :就是位于小程序底部或顶部的调整导航栏,与微信底部导航栏类似。 注意: tabBar中只能配置 最少2个 、 最多5个 tab页签 当渲染 顶部的

    2024年02月04日
    浏览(49)
  • 微信小程序底部tabBar不显示图标

    在设置微信小程序底部tabBar导航图标时,无论如何操作均无法显示在界面上 问题1 图标类型 一开始以为不支持 png 类型,但查看官方API仅提示 ICON 尺寸大小 打开其他项目可以正常展示,排除图标类型问题 问题2 图标路径设置问题 按住 ctrl 和 鼠标左键点击 均可跳转查看对应图

    2024年02月07日
    浏览(39)
  • 微信程序 自定义遮罩层遮不住底部tabbar解决

    一、先上效果 二 方法 1、自定义底部tabbar 实现: https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html 官网去抄 简单写下:在代码根目录下添加入口文件 除了js 文件的list 需要调整 其他原封不动 代码: js部分 json wxml wxss 2、 list 的中的页面 都需要在 onShow 中加入

    2024年02月12日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包