微信小程序——自定义导航栏

微信头部导航栏可能通过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

 
<!--components/navbar/index.wxml-->
<view class="navbar" style='height:{{navH}}px'><view class="navbar-action-wrap  {{showHome ? 'navbar-action-group' : ''}} row item-center" wx:if="{{showNav}}"><block wx:if="{{showHome}}"><ss-icon name="back" color="#333" size="15px" custom-class="navbar-action_item first" bind:click="navBack"></ss-icon><ss-icon name="index"  color="#333" size="16px" custom-class="navbar-action_item" bind:click="toIndex" ></ss-icon></block><block wx:else>
<ss-icon name="back"  color="#fff" size="18px" custom-class="navbar-action_item first" bind:click="navBack"></ss-icon></block></view><view class='navbar-title'>{{pageName}}</view>
</view>

index.js

/ components/navbar/index.js
const 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中使用该组件:

<view class='view-page'><navbar page-name="你当前页面的名字"></navbar><view class='page-content' style='height:calc(100vh - {{navH}}px)'><!--这里放你的内容--></view>
</view>

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})},})

最后的结如下图所示:

微信小程序 自定义导航栏相关推荐

  1. 微信小程序自定义导航栏(带汉堡包菜单)

    微信小程序自定义导航栏(带汉堡包菜单) 1.在app.json中 window配置navigationStyle (如果单独页面使用,可在页面的json文件配置) 2.计算相关值 整个导航栏的高度: ...

  2. 微信小程序自定义导航栏 navigation bar 返回键 首页

    微信小程序自定义导航栏(wx_custom_navigation_bar) 自定义返回键.首页键,动态设置标题,响应式组件 版本号:2.0.0 作者:chen-yt github: https://g ...

  3. 微信小程序自定义导航栏如何实现(简洁版)~内附代码

    先来张效果图 实现起来也是十分容易的,几行代码. Page({data: {},onLoad() {// 获取设备的信息let menuButtonObject = wx.getMenuButtonB ...

  4. 微信小程序-自定义导航栏

    微信小程序-自定义导航栏 第一步 添加属性 "navigationStyle": "custom" 第二步 自定义导航栏 第二步 自定义组件 第四步 使用组件 ...

  5. 微信小程序自定义导航栏组件

    效果图 首先要先在 json文件里加上 "navigationStyle":"custom", 这句,去掉原生的自定义导航栏 一.子组件-wxml <vi ...

  6. 微信小程序自定义导航栏组件,完美适配所有手机,可实现各种功能和情况

    背景 在做小程序时,关于默认导航栏,我们遇到了以下的问题: Android.IOS手机对于页面title的展示不一致,安卓title的显示不居中 页面的title只支持纯文本级别的样式控制,不能够做更 ...

  7. 微信小程序自定义导航栏机型适配--底部Tabbar--view高度--底部按钮适配

    自定义微信小程序头部导航栏 自定义微信小程序头部导航栏,有几种方式 方式一 {"navigationStyle": "custom" // 将navigatio ...

  8. 微信小程序自定义导航栏返回和标题

    1.新建组件 index.json {"component": true } navbar.wxss //navbar.wxss .navbar{width: 100%;//设置导 ...

  9. 微信小程序自定义导航栏组件(完美适配所有手机),可自定义实现任何你想要的功能

    背景 在做小程序时,关于默认导航栏,我们遇到了以下的问题: Android.IOS 手机对于页面 title 的展示不一致,安卓 title 的显示不居中 页面的 title 只支持纯文本级别的样式控 ...

  10. 微信小程序-自定义导航栏及返回上一级页面的实现

    一.参考文章 1.微信小程序自定义navigationBar 2.微信小程序返回上一级页面的实现代码 3.小程序开发--常用布局 二.需求 在导航栏中需要显示信息的"未读数量",所 ...

最新文章

  1. (原)调用jpeglib对图像进行压缩
  2. 电商:流量不再重要,渠道终将为王
  3. python newspaper_第74天:Python newspaper 框架
  4. OpenXML标签含义
  5. 深入理解Java-GC机制
  6. Python有限状态机FMS结合测试用例
  7. Linux下装Matlab2014
  8. 网络游戏服务器之 日志系统
  9. Winform MDI窗体子窗体显示区域大小
  10. Android气泡弹幕,Android弹幕实现:基于B站弹幕开源系统(7)QQ、微信聊天气泡样式的弹幕...
  11. 有哪些优质的电脑端浏览器推荐?
  12. sonicwall NSA-2600 防火墙基本介绍
  13. Struts2 漏洞集合
  14. c语言谷歌坐标转百度坐标,关于GPS定位经纬度到谷歌(google)坐标以及百度(百度)坐标的转换c#源码...
  15. g2o之SE3-SE3约束
  16. 陈皓(@左耳朵耗子):我的精神家园(图灵访谈)
  17. ajax什么是异步和同步,ajax异步和同步的区别
  18. 第十六次 Java作业:使用阿里云提供的API查询天气预报
  19. 大数据要分析的数据类型,主要分为哪几大类?
  20. Pixhawk参数调整

热门文章

  1. Unity - 撸一个简单版本的 四叉树 + 视锥cascaded,用于场景剔除
  2. 千兆以太网芯片88E1111 RGMII模式的驱动
  3. GM300单片硅钢铁损测试仪操作使用指引
  4. FPGA之JESD204B接口——总体概要 实例 下
  5. proteus仿真常见报错信息
  6. cvtColor()实际操作
  7. Dart语言详解(一)——详细介绍
  8. np.linspace函数用法
  9. 软考-中级-网络工程师-知识点个人总结(八)
  10. 干货丨网站域名后缀都是什么含义?