微信小程序顶部导航栏十分常见、尤其是在新闻类的小程序里,常见的导航栏有可水平滑动导航栏、居中导航栏、平分导航栏,本文手把手教你完成水平导航栏。

以《报修小程序源码》为基础拓展讲解平分导航栏

传送门:flask + mysql + 微信报修小程序源码获取

最终实现结果如下:

在这里插入图片描述

编写 wxml 页面

编程思路:

需要一个外层 view ,将内层水平的子 view 包含进来 ,保证内层 view 的灵活行,是用遍历 tabs 数组的形式进行 。

代码编写:

在 wxml 页面最顶部写入下面代码:

  <view class="flex nav">
  	<view class="nav-item  {{index==current?'text-selected current':''}}" wx:for="{{tabs}}" wx:key bindtap="tabSelect" data-id="{{index}}">
  		{{item}}
  	</view>
  </view>
编写 wxss 样式

编程思路:

水平平分导航栏包含:一个外层 view 和多个内层 view ,内层 view 是水平排列,外层 view 需使用 css 的 flex 属性 ,同时内层各个 view 平分 ,因此内层 view 需要设置 flex=1 。

对于 css 不熟悉的同学,建议去看一下 css flex的使用方法。

在 wxss 文件中写入以下代码:

/* 页面背景颜色为 #f2f2f2 */
page {
  background: #f2f2f2;
}

/* 设置导航外层样式,绝对定位设置为fixed。z-index: 999999; 能够将 nav 布局层级结果放在最上层,避免被下层view遮挡*/
.nav {
  position: fixed;
  background: white;
  color: #353535;
  z-index: 999999;
  max-height: 94rpx;
  width: 100%;
}

/* 设置为水平布局,文字居中显示 */
.flex {
  display: flex;
  text-align: center;
}

/* 设置选中项的底部边框 */
.nav .nav-item.current {
  border-bottom: 4rpx solid;
}

/* 设置选中项的文字颜色和大小 */
.text-selected {
  color: #2196F3;
  font-size: 34rpx;
}

/* 设置各项的高度、边距,同时设置flex=1,表示各项平分 */
.nav .nav-item {
  height: 90rpx;
  display: inline-block;
  line-height: 90rpx;
  margin: 0 10rpx;
  padding: 0 20rpx;
  flex: 1;
}
编写 js

编程思路:

在 data 中定义一个数组 tabs ,用于存放我们要展示的导航项,这里只放置了三项,建议不超过五项,超过五项不建议使用平分导航栏,需要使用可滑动导航栏。若页面进入我们希望显示第一个 tab ,则设置 current = 0 ,若希望像是第二个 tab ,则设置 current = 1。

每个 tab 点击后,使用 tabSelect 函数进行切换改变 current 的数值即可。

在 js 文件中写入下面代码:

 data: {
    url: app.domain,
    tabs: ['新报修', '维修中', '已完成'],
    current:0,
  },
  tabSelect:function(e){
    var current = e.currentTarget.dataset.id
    this.setData({
      current:current
    })
  },

到此!我们就完成一个水平平分导航栏。

总结:

小程序页面的编写,实际上和html+css+js的编写相似,样式的编写主要是css 实现。假设你想完成一个特殊的页面样式,你可以在度娘上搜索使用 html+css实现的类似页面样式,修改 html 标签为小程序标签即可使用。

现在,你应该把《报修小程序》源码做进一步修改,将报修记录和添加报修拆分,首页显示报修记录,报修页直接换成报修添加页面。继续扩展出报修工单的状态吧!

如果你遇见任何问题,可扫码关注我,与我交流!
在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐