# Navigator 自定义导航栏

自定义导航栏组件。

# 引入说明

TIP

import Navigator from '@dmall/jimoui-mp/components/CustomNavBar/CustomNavBar';
1

# 代码演示

TIP

<GACustomNavBar :navBarColor="bgColor" :position="'sticky'" @onInit="getStatusHeight">
    <view class="nav-head">
        <view class="navigation" :style="navStyle.navLeft">
            <view :style="navStyle.navBtn" @tap.stop="goBackCallBackFn ? goBackCallBackFn() : navigateJump('back')"></view>
            <view :style="navStyle.navBtn" @tap.stop="navigateJump('home')"></view>
        </view>

        <view class="title">{{ title }}</view>
    </view>
</GACustomNavBar>
1
2
3
4
5
6
7
8
9
10

# 属性

Navigator:

配置 用途 取值 使用描述
navBarColor 导航栏背景颜色 String 默认为transparent即透明。
backgroundImage 导航栏背景图片 String 默认为空。
backgroundSize 导航栏背景图布局形式 String 默认为100% 100%。
position 定位方式 String 默认为fixed,可选的方式包含 'absolute' 、'fixed' 、'static'、'sticky'
:zIndex 默认选中项的索引值 Number 默认为0。
传入项为需要选中的列表项在数组中的Index值。
@onInit 导航栏加载完成事件 Event $event:{ statusBarHeight: number 状态栏高度值 ,navBarHeight: 导航区高度值,}

# 注意:

对于微信、支付宝小程序来说,导航栏的实现和Web端是完全不同的。因此在使用上也会有较大差异。

核心的区别在于,纯Web端的导航栏不能包含状态栏区域,而App端依赖Bridge方法获取状态栏信息,同时在Hybrid与Web端场景的导航栏几乎是规范统一的。

但是小程序的差异在于,获取状态栏依赖官方的systemInfo,而微信的getSystemInfo是一个执行效率极低的接口;而根据C端设计规范,导航区的高度是与小程序菜单按钮的尺寸是有关系的。

除此以外,粘性定位在小程序端的兼容性是比较差的,基本上不能直接使用。这些问题交给开发者,他们可能会写出性能各异,处理形式不同的代码。

综上所述,小程序端的导航栏的设计核心,在于提供一个占用了状态栏的容器区域,并且根据设计规范处理好胶囊按钮区与状态栏之间的间距。
开发者在使用该组件时,理论上,他仅需关注状态栏以下导航头区域的内容,是左对齐菜单、或是居中标题,或者是跟随滑动变更色调、透明度的固定导航条,都由开发者决定。
而不是像Web端的导航栏完全锁定设计规范,仅仅允许自定义右上角按钮区域的内容。

  • iOS
  • Android
  • Web
  • MP
v1.0.0