uniapp移动端自定义导航栏

527 阅读1分钟

一、什么是导航栏

image.png

image.png

上面两幅图片,就是我们所说的导航栏。

上面带有时间日期的一块叫状态栏,下面带有标题文字的叫标题栏。

标题栏又可以分为左侧部分(箭头),中间部分(标题),右侧部分(按钮)。

二、创建nav-bar组件

接着我们需要建立组件。 uniapp框架,创建components目录,在目录下创建“文件名/文件名.vue”,框架会自动创建一个以文件名作为标签的组件。我们创建一个名为nav-bar的组件。

image.png

三、创建组件

状态栏,通过uni.getSystemInfoSync()api获取,在应用生命周期onLaunch内将系统信息存入全局,组件内获取状态栏高度进行渲染。

标题栏自定义,左右两部分使用具名slot插槽进行自定义。 中间文字,通过父组件向子组件传值,显示标题。

    <template>
        <view>
            <view class="navBar" :style="{backgroundColor:bgColor}">
                <!-- 状态栏 -->
                <view class="status" :style="{height:statusHeight+'px'}"></view>
                <!-- 标题栏 -->
                <view class="title-bar" :style="{heihgt:titleHeight+'px',lineHeight:titleHeight+'px'}">
                <!-- 左侧部分 -->
                <view class="left">
                    <slot name="left-holder"></slot>
                </view>
                <!-- 中间部分 -->
                <view class="">{{title}}</view>
                <!-- 右侧部分 -->
                <view class="right">
                    <slot name="right-holder"></slot>
                </view>
            </view>
        </view>
        <!-- 占位盒子 -->
        <view class="" v-if="holderFlag" :style="{height:(statusHeight+titleHeight)+'px'}"></view>
    </view>
    </template>

四、组件的使用

在需要使用的位置使用nav-bar标签,在标签中键入左右样式内容。

<nav-bar>
    <!-- 左侧部分导航 -->
    <template v-slot:left-holder>
        <view class="nav">
            <view :class="navCurrent==1?'nav-selected':'nav-select'" @click="chooseNav(1)">推荐</view>
            <view :class="navCurrent==2?'nav-selected':'nav-select'" @click="chooseNav(2)">关注</view>
        </view>
    </template>
    <!-- 中间部分标题 -->
    <view>{{title}}</view>
    <!-- 右侧部分功能按钮 -->
    <template v-slot:right-holder>
        <view class="nav-icon">
            <image class="icon marrig20" src="@/static/search-icon.png" mode=""></image>
            <image class="icon" src="@/static/play-icon.png"></image>
        </view>
    </template>
</nav-bar>

总结

此时,我们就结束了我们导航栏的自定义,我会将我的代码放入git仓库,大家需要可以下载学习。

链接地址:gitee.com/gomigo/miko…