微信小程序中的 tabBar

news/2024/7/20 1:38:36 标签: 微信小程序, 小程序, 微信

自定义 tabBar

基础库 2.5.0 开始支持,低版本需做兼容处理。

自定义 tabBar 可以让开发者更加灵活地设置 tabBar 样式,以满足更多个性化的场景。

在自定义 tabBar 模式下

  • 为了保证低版本兼容以及区分哪些页面是 tab 页,tabBar 的相关配置项需完整声明,但这些字段不会作用于自定义 tabBar 的渲染。
  • 此时需要开发者提供一个自定义组件来渲染 tabBar,所有 tabBar 的样式都由该自定义组件渲染。推荐用 fixed 在底部的 cover-view + cover-image 组件渲染样式,以保证 tabBar 层级相对较高。
  • 与 tabBar 样式相关的接口,如 wx.setTabBarItem 等将失效。
  • 每个 tab 页下的自定义 tabBar 组件实例是不同的,可通过自定义组件下的 getTabBar 接口,获取当前页面的自定义 tabBar 组件实例。

注意:如需实现 tab 选中态,要在当前页面下,通过 getTabBar 接口获取组件实例,并调用 setData 更新选中态。可参考底部的代码示例。

使用流程

1. 配置信息

  • app.json 中的 tabBar 项指定 custom 字段,同时其余 tabBar 相关配置也补充完整。
  • 所有 tab 页的 json 里需声明 usingComponents 项,也可以在 app.json 全局开启。

示例:

{
  "tabBar": {
    "custom": true,
    "color": "#000000",
    "selectedColor": "#000000",
    "backgroundColor": "#000000",
    "list": [{
      "pagePath": "page/component/index",
      "text": "组件"
    }, {
      "pagePath": "page/API/index",
      "text": "接口"
    }]
  },
  "usingComponents": {}
}

2. 添加 tabBar 代码文件

在代码根目录下添加入口文件:

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

3. 编写 tabBar 代码

用自定义组件的方式编写即可,该自定义组件完全接管 tabBar 的渲染。另外,自定义组件新增 getTabBar 接口,可获取当前页面下的自定义 tabBar 组件实例。

示例代码

在开发者工具中预览效果

skyline 模式

使用 skyline 渲染模式的时候,需要进行如下适配:

1. tabBar 组件样式兼容

  • tabBar 根组件需要添加 pointer-events: auto
  • tabBar 根组件定位需为 position: absolute
<view class="tab-bar">
  <!-- tabbar item-->
</view>

.tab-bar {
  pointer-events: auto;
  position: absolute;
}

2. getTabBar 回调函数

skyline 模式下,页面/组件上的 getTabBar 接口为异步回调的方式获取 tabBar 实例

Page({
  getInstance() {
    if (typeof this.getTabBar === 'function' ) {
      this.getTabBar((tabBar) => {
        tabBar.setData({
          selected: 0
        })
      })
    }
  }
})

skyline 示例代码

在开发者工具中预览效果


http://www.niftyadmin.cn/n/454281.html

相关文章

公司官网在线帮助文档怎么写?

公司官网在线帮助文档&#xff0c;是公司为用户提供的一种在线帮助服务&#xff0c;旨在帮助用户更好地理解和使用公司的产品和服务。这篇文章将介绍在线帮助文档的写作方法和技巧&#xff0c;帮助企业提高帮助文档的质量和效果。 一、明确文档目的和受众 在开始撰写帮助文档…

MarkDown常用功能

快捷键 撤销&#xff1a;Ctrl/Command Z 重做&#xff1a;Ctrl/Command Y 加粗&#xff1a;Ctrl/Command B 斜体&#xff1a;Ctrl/Command I 标题&#xff1a;Ctrl/Command Shift H 无序列表&#xff1a;Ctrl/Command Shift U 有序列表&#xff1a;Ctrl/Command Shif…

微信小程序——分页组件的创建与使用

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

spring 解决循环依赖

spring 解决循环依赖 1、什么是循环依赖&#xff1f; 循环依赖其实就是循环引用&#xff0c;也就是两个或则两个以上的bean互相持有对方&#xff0c;最终形成闭环。比如A依赖于B&#xff0c;B依赖于C&#xff0c;C又依赖于A。如下图&#xff1a; spring的单例对象的初始化主要…

回调函数(callback)是什么?一文理解回调函数(callback)

这里写目录标题 一、什么是回调函数1.1、回调函数的定义和基本概念1.2、回调函数的作用和使用场景 二、回调函数的实现方法2.1、函数指针2.2、函数对象/functor2.3、匿名函数/lambda表达式 三、回调函数的应用举例四、回调函数的优缺点五、回调函数与其他编程概念的关系5.1、回…

【Java-SpringBoot+Vue+MySql】Day2-第一个SpringBoot项目应用

目录 一、初步了解SpringBoot 二、创建第一个SpringBoot项目 三、配置MyBatis数据源 四、创建启动类 五、MVC设计模式 六、SpringBoot整合应用 &#xff08;1&#xff09;创建一个实体类 &#xff08;2&#xff09;创建DAO接口 &#xff08;3&#xff09;创建mapper&#…

多窗口通信

1、基本概念 BroadcastChannel接口代理了一个命名频道&#xff0c;可以让指定 origin 下的任意 browsing context 来订阅它。它允许同源的不同浏览器窗口&#xff0c;Tab 页&#xff0c;frame 或者 iframe 下的不同文档之间相互通信。通过触发一个 message 事件&#xff0c;消…

值得收藏的 10个 Android 手机恢复丢失文件的工具榜单

尽管我们尽可能避免这种情况&#xff0c;但有时我们还是会不小心删除 Android 设备上的重要文件。无论是照片、视频、文档还是任何其他形式的数据&#xff0c;数据丢失都会带来巨大的痛苦。不幸的是&#xff0c;Android 设备没有内置恢复工具。但是&#xff0c;有一些第三方恢复…