zoukankan      html  css  js  c++  java
  • 移动端开发基础【21】tabBar 配置

    如果应用是一个多 tab 应用,则可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面。

    • Tips

    (1)   当设置 position 为 top 时,将不会显示 icon

    (2)   tabBar 中的 list 是一个数组,只能配置最少2个、最多5个 tab,tab 按数组的顺序排序。

    (3)   tabbar 切换第一次加载时可能渲染不及时,可以在每个tabbar页面的onLoad生命周期里先弹出一个等待雪花(hello uni-app使用了此方式)

    (4)   tabbar 的页面展现过一次后就保留在内存中,再次切换 tabbar 页面,只会触发每个页面的onShow,不会再触发onLoad。

    (5)   顶部的 tabbar 目前仅微信小程序上支持。需要用到顶部选项卡的话,建议不使用 tabbar 的顶部设置,而是自己做顶部选项卡,可参考 hello uni-app->模板->顶部选项卡。

    • 属性说明

    属性

    类型

    必填

    默认值

    描述

    平台差异说明

    color

    HexColor

     

    tab 上的文字默认颜色

     

    selectedColor

    HexColor

     

    tab 上的文字选中时的颜色

     

    backgroundColor

    HexColor

     

    tab 的背景色

     

    borderStyle

    String

    black

    tabbar 上边框的颜色,可选值 black/white

    App 2.3.4+ 支持其他颜色值

    blurEffect

    String

    none

    iOS 高斯模糊效果,可选值 dark/extralight/light/none

    App 2.4.0+ 支持

    list

    Array

     

    tab 的列表,详见 list 属性说明,最少2个、最多5个 tab

     

    position

    String

    bottom

    可选值 bottom、top

    top 值仅微信小程序支持

    fontSize

    String

    10px

    文字默认大小

    App 2.3.4+

    iconWidth

    String

    24px

    图标默认宽度(高度等比例缩放)

    App 2.3.4+

    spacing

    String

    3px

    图标和文字的间距

    App 2.3.4+

    height

    String

    50px

    tabBar 默认高度

    App 2.3.4+

    midButton

    Object

     

    中间按钮 仅在 list 项为偶数时有效

    App 2.3.4+

    其中 list 接收一个数组,数组中的每个项都是一个对象,其属性值如下:

    属性

    类型

    必填

    说明

    pagePath

    String

    页面路径,必须在 pages 中先定义

    text

    String

    tab 上按钮文字,在 App 和 H5 平台为非必填。例如中间可放一个没有文字的+号图标

    iconPath

    String

    图片路径,icon 大小限制为40kb,建议尺寸为 81px * 81px,当 postion 为 top 时,此参数无效,不支持网络图片,不支持字体图标

    selectedIconPath

    String

    选中时的图片路径,icon 大小限制为40kb,建议尺寸为 81px * 81px ,当 postion 为 top 时,此参数无效

    • midButton 属性说明

    属性

    类型

    必填

    默认值

    描述

    width

    String

    80px

    中间按钮的宽度,tabBar 其它项为减去此宽度后平分,默认值为与其它项平分宽度

    height

    String

    50px

    中间按钮的高度,可以大于 tabBar 高度,达到中间凸起的效果

    text

    String

     

    中间按钮的文字

    iconPath

    String

     

    中间按钮的图片路径

    iconWidth

    String

    24px

    图片宽度(高度等比例缩放)

    backgroundImage

    String

     

    中间按钮的背景图片路径

    midButton没有pagePath,需监听点击事件,自行处理点击后的行为逻辑。监听点击事件为调用API:uni.onTabBarMidButtonTap。

    • tabbar常见问题

    (1)tabbar 的默认高度,在不同平台不一样。App端的默认高度在HBuilderX 2.3.4起从56px调整为50px,与H5端统一。开发人员也可以自行设定高度,调回56px。

    (2)tabbar 的 js api,可有实现动态显示隐藏(如弹出层无法覆盖tabbar)、内容修改(如国际化)、item加角标等的功能。hello uni-app模板中也有具体的示例,可以参考。

    (3)tabbar 的 item 点击事件见页面生命周期的onTabItemTap。

    (4)代码跳转到tabbar页面,api只能使用uni.switchTab,不能使用uni.navigateTo、uni.redirectTo;使用navigator组件跳转时必须设置open-type="switchTab"

    (5)tabbar 在H5端是div模拟的,属于前端屏幕窗口的一部分,如果要使用bottom居底定位方式,应该使用css变量--window-bottom,比如悬浮在tabbar上方10px的按钮,样式如下bottom: calc(var(--window-bottom) + 10px)

    (6)中间带+号的tabbar模板例子,可以参考uniapp插件市场的示例(底部带加号tabbar选项卡项目模板)。可跨端,但+号不凸起。如需中间凸起,配置tabbar的midButton。

    (7)原生的tabbar有且只有一个且在首页。二级页如需的tab,前端自行实现。

    (8)若App端自定义tabbar,建议使用nvue并做成单页方式,即所有tabbar的页面内容其实写在一个nvue页面里,这样的性能体验更好。

    (9)微信通过webview自定义tabbar,在uni-app也支持,但仅支持微信。因该功能体验不佳,app上没有实现这个方式,而是推荐使用app提供的自定义tabbar方式,不管是原生tabbar额外的自定义配置还是nvue的单页自定义tabbar。

    (10)  如果是需要先登录、后进入tab页面,不需要把登陆页设为首页,首页仍然是tabbar页,可参考HBuilderX新建uni-app项目时的登陆模板

    (11)  前端弹出遮罩层挡不住tabbar的问题,跨端处理方式时动态隐藏tabbar。App端可以使用plus.nativeObj.view或subNVue做弹出和遮罩,可以参考插件市场提供的示例:底部原生图标分享菜单

    (12)  微信小程序模拟器1.02.1904090版有bug,在缩放模拟器页面百分比后,tabbar点击多次后就会卡死。真机无碍,使用时注意。

    • 代码示例

    "tabBar": {

        "color": "#7A7E83",

        "selectedColor": "#3cc51f",

        "borderStyle": "black",

        "backgroundColor": "#ffffff",

        "list": [{

           "pagePath": "pages/component/index",

           "iconPath": "static/image/icon_component.png",

              "selectedIconPath":"static/image/icon_component_HL.png",

            "text": "组件"

        }, {

            "pagePath": "pages/API/index",

            "iconPath": "static/image/icon_API.png",

            "selectedIconPath": "static/image/icon_API_HL.png",

            "text": "接口"

        }]

    }

    官网:http://www.lenbor.com
  • 相关阅读:
    浏览器页面呈现过程
    Function与Object
    前端性能优化方案
    CSS引入方式
    浏览器事件
    Js继承的实现方式
    H5页面 绝对定位元素被 软键盘弹出时顶起
    总结angular+ionic项目中的问题
    vue开发学习中遇到的问题以及解决方法
    css重修之书(一):如何用css制作比1px更细的边框
  • 原文地址:https://www.cnblogs.com/lenbor/p/13536112.html
Copyright © 2011-2022 走看看