博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信小程序——自定义导航栏
阅读量:7043 次
发布时间:2019-06-28

本文共 3097 字,大约阅读时间需要 10 分钟。

微信头部导航栏可能通过json配置:

 

但是有时候我们项目需求可能需要自定义头部导航栏,如下图所示:

 

现在具体说一下实现步骤及方法

步骤:

1.在 app.json 里面把 "navigationStyle" 设置为 "custom"

这样子之后就只会保留右上角胶囊按钮了。

 

2.在app.js中通过wx.getSystemInfo()获取头部导航条的高度,因为在不同的手机型号头部那条栏目高度可能不一致。

App({    onLaunch: function () {      wx.getSystemInfo({        success: res => {          //导航高度          this.globalData.navHeight = res.statusBarHeight + 46;        }, fail(err) {          console.log(err);        }      })    }})

 

3.因为这个头部导航是公共的,所以我们最好把它设置成一个组件,命名为navbar

 

index.wxml:

{
{pageName}}

 

index.js:

// components/navbar/index.jsconst App = getApp();Component({  options: {    addGlobalClass: true,  },  /**   * 组件的属性列表   */  properties: {    pageName:String,    showNav:{      type:Boolean,      value:true    },    showHome: {      type: Boolean,      value: true    }  },  /**   * 组件的初始数据   */  data: {     },  lifetimes: {    attached: function () {      this.setData({        navH: App.globalData.navHeight      })     }  },  /**   * 组件的方法列表   */  methods: {    //回退    navBack: function () {        wx.navigateBack({          delta: 1        })          },    //回主页    toIndex: function () {      wx.navigateTo({        url: '/pages/admin/home/index/index'      })    },  }})

 

index.wxss:

/* components/navbar/index.wxss */.navbar {
width: 100%; overflow: hidden; position: relative; top: 0; left: 0; z-index: 10;}.navbar-title {
width: 100%; height: 46px; line-height: 46px; text-align: center; position: absolute; bottom: 0; left: 0; z-index: 10; background-color: #fff; color: #333; font-size: 30rpx;}.navbar-action-wrap{
position: absolute; left: 10px; bottom: 7px; z-index: 100; line-height: 1; padding-top: 4px; padding-bottom: 4px;}.navbar-action-group {
border:1px solid #e8e8e8; border-radius: 20px; overflow: hidden}.navbar-action_item{
padding:3px 0; color: #333;}.navbar-action-group .navbar-action_item{
border-right: 1px solid #e8e8e8; padding:3px 12px;}

 

index.json:

{
"component": true, "usingComponents": { "ss-icon": "/components/icon/index" }}

ss-icon 是我自定义的一个 icon 组件,。 如果你没有这个组件,可以在我使用<ss-icon></ss-icon>的地方换成<view></view>组件,然后里面放入你的图标就可以了。

对于组件不太明白的,可以看下相关组件的介绍。

 

组件已创建完毕,现在说下该组件的使用方法

假设我们需要在index.wxml中需要调用这个组件,

1.在index.json中引用该组件:

{  "usingComponents": {    "navbar": "/components/navbar/index"  }}

 

2.在index.wxml中使用该组件:

 

3.通过index.wxss布局:

page {
height: 100%; position: relative; overflow: hidden; box-sizing: border-box;}.view-page {
height: 100%; width: 100%; left: 0; top: 0; box-sizing: border-box; position: absolute; overflow: hidden;}.page-content {
box-sizing: border-box; position: relative; overflow-y: auto;}

 

4.在index.js中获取全局的navH的值:

//获取应用实例const App = getApp();Page({  /**   * 页面的初始数据   */  data: {     },  /**   * 生命周期函数--监听页面加载   */  onLoad: function (options) {    let _this = this;    _this.setData({      navH: App.globalData.navHeight    })  },})

 

最后的结果如下图所示:

 

转载地址:http://qgqal.baihongyu.com/

你可能感兴趣的文章
SQL Server-聚焦ROW_NUMBER VS TOP N性能
查看>>
少用数字来作为参数标识含义
查看>>
不错位的java .class 反编译工具推荐
查看>>
SQLServer 数据库镜像+复制切换方案
查看>>
element el-input directive数字
查看>>
package-lock.json和yarn.lock的包依赖区别
查看>>
SpringBoot+websocket+定时任务(如何及时实时响应服务端数据)
查看>>
PHP回顾之协程
查看>>
Do you want to be a Python expert ? 前言
查看>>
MvnForum源码环境配置
查看>>
【Java并发编程的艺术】第二章读书笔记之原子操作
查看>>
JS设计模式-策略模式
查看>>
SegmentFault 社区访谈 | Linxz:只会写 CSS 不会写 JS 的“伪”前端
查看>>
log4net 普通文件、数据库日志
查看>>
算法学习——DP篇
查看>>
Springboot 之 引入Thymeleaf
查看>>
webpack学习笔记2 起步
查看>>
注解全解析
查看>>
map函数的使用技巧
查看>>
Laravel5.2 自定义类引入和命名空间问题
查看>>