开始



"app-plus": {"titleNView": false}
引入自定义导航栏

复制发布页的 过来改改




<uni-nav-bar :statusBar="true" @clickRight="openAdd"></uni-nav-bar>
左边和右边的插槽
图标库
左边是签到
左边和右边图标
右边是铅笔图标

图标用view组件包裹起来
中间也用view组件
<!-- 自定义导航栏 --><uni-nav-bar :statusBar="true" @clickRight="openAdd"><!-- 左边 --><block slot="left"><view class=""><view class="icon iconfont icon-qiandao"></view></view></block><!-- 中间 --><view class=""></view><!-- 右边 --><block slot="right"><view class=""><view class="icon iconfont icon-bianji1"></view></view></block></uni-nav-bar>
签到图标太小了也太靠边了。 右侧的铅笔图标也位置不对。


加黑色的边框


左边和右边的宽度不一样。
右边100%,左边加点外边距。
图标的大小
<style>.nav-left,.nav-right{border: 1upx solid;width: 100%;}.nav-left{margin-left: 16upx;}.nav-left>view,.nav-right>view{font-size: 32upx;}</style>

右边的图标需要居中一下
flex布局 上下左右居中。
u-f-ajc

图标增大

去掉边框
吸取图标颜色

中间内容

加个边框
水平垂直居中

边框距离右边和距离左边是有一定的区别的
需要把中间的边框往左边移一下。负的20就向左边偏移

边框去掉
.nav-tab-bar{/* 父节点是flex为1的 所以这里100%宽度就可以继承父元素的宽度 */width: 100%;border: 1upx solid;margin-left: -20upx;}

可以看到字体大小和间距都小了
字体大小 和 左右的内边距
差多不了 但是字体有点大。

.nav-tab-bar>view{border: 1upx solid;font-size: 32upx;padding: 0 15upx;}
字体加粗
.nav-tab-bar>view{border: 1upx solid;font-size: 32upx;padding: 0 15upx;font-weight: bold;}
优化
默认颜色 ,选中颜色, 底部黄线

<view class="active">关注</view>
黄色的线,在里面再加一个view

<view class="nav-tab-bar u-f-ajc"><view class="active">关注<view class="nav-tab-bar-line"></view></view><view class="">话题<view class="nav-tab-bar-line"></view></view></view>
默认的字体颜色
选中的的字体颜色
.active{color: #333333!important;}
线的样式
.nav-tab-bar-line{border-bottom: 5upx solid red;border-top: 5upx solid red;width: 70upx;border-radius: 20upx;}
没见黄线
使用相对定位。父元素相对定位
.nav-tab-bar{/* 父节点是flex为1的 所以这里100%宽度就可以继承父元素的宽度 */width: 100%;/* border: 1upx solid; */margin-left: -20upx;position: relative;}
子元素绝对定位。

删

差不多了 希望再网上一点点。


上下左右 垂直居中。

吸取黄色
去掉外边框。
.nav-tab-bar-line{border-bottom: 14upx solid #FEDE33;/* border-top: 7upx solid #FEDE33; */width: 70upx;border-radius: 20upx;position: absolute;bottom: 12upx;}
实现功能

data() {return {tabIndex: 0,tabBaras: [{name:'关注',id:'guanzhu'},{name:'话题',id:'toppic'},]}},
block,然后v-for循环

<view class="nav-tab-bar u-f-ajc"><block v-for="(tab,index) in tabBaras" :key="tab.id"><view class="u-f-ajc" :class="{'active':tabIndex==index}">{{tab.name}}<view v-if="(tabIndex==index)" class="nav-tab-bar-line"></view></view></block></view>
点击事件

<view class="u-f-ajc" :class="{'active':tabIndex==index}"@tap="changeTab(index)">

methods: {changeTab(index) {this.tabIndex=index;}}
发布点击事件
复制这段 navigateTo跳转的代码
uni.navigateTo({url:'../add-input/add-input'});
增加openAdd方法
openAdd(){uni.navigateTo({url:'../add-input/add-input'})}


本节最终代码
<template><view><!-- 自定义导航栏 --><uni-nav-bar :statusBar="true" @clickRight="openAdd"><!-- 左边 --><block slot="left"><view class="nav-left"><view class="icon iconfont icon-qiandao"></view></view></block><!-- 中间 --><view class="nav-tab-bar u-f-ajc"><block v-for="(tab,index) in tabBaras" :key="tab.id"><view class="u-f-ajc" :class="{'active':tabIndex==index}"@tap="changeTab(index)">{{tab.name}}<view v-if="(tabIndex==index)" class="nav-tab-bar-line"></view></view></block></view><!-- 右边 --><block slot="right"><view class="nav-right u-f-ajc"><view class="icon iconfont icon-bianji1"></view></view></block></uni-nav-bar></view></template><script>export default {data() {return {tabIndex: 0,tabBaras: [{name:'关注',id:'guanzhu'},{name:'话题',id:'toppic'},]}},methods: {changeTab(index) {this.tabIndex=index;},openAdd(){uni.navigateTo({url:'../add-input/add-input'})}}}</script><style>/* .nav-left,.nav-right{border: 1upx solid;width: 100%;} */.nav-left{/* 这里视频中是左边16upx,实际这里是不需要的 */margin-left: 0upx;}.nav-left>view,.nav-right>view{font-size: 40upx;}.nav-left>view{color: #FF9619;}.nav-tab-bar{/* 父节点是flex为1的 所以这里100%宽度就可以继承父元素的宽度 */width: 100%;/* border: 1upx solid; */margin-left: -20upx;position: relative;}.nav-tab-bar>view{/* border: 1upx solid; */font-size: 32upx;padding: 0 15upx;font-weight: bold;color: #969696;}.active{color: #333333!important;}.nav-tab-bar-line{border-bottom: 14upx solid #FEDE33;/* border-top: 7upx solid red; */width: 70upx;border-radius: 20upx;position: absolute;bottom: 12upx;}</style>
