小程序 ---- (自定义头部导航)

一、开发思路

二、实现过程

在小程序入口文件,app.js当中,键入以下代码(好好看注释,很容易明白):

// app.js
App({onLaunch() {// 判断是否由分享进入小程序let options = wx.getLaunchOptionsSync();let scene = options.scene;console.log(scene, '1007/1008')// 获取胶囊按钮的高度和距离顶端的高度和标题let menubuttonHeight = wx.getMenuButtonBoundingClientRect().height;let menubuttonTop = wx.getMenuButtonBoundingClientRect().top;// 获取设备顶部状态栏的高度与状态栏的间隙高度wx.getSystemInfo({success: (result) => {// 套公式let statusHeight = (menubuttonTop - result.statusBarHeight) * 2 + menubuttonHeight + result.statusBarHeight;// 计算胶囊按钮和状态栏之间的间隙高度let menubuttonPadding = menubuttonTop - result.statusBarHeight;// 计算胶囊按钮中间到状态栏的距离,目的使标题文本与胶囊按钮上下居中对齐this.globalData.menubuttonPaddingTop = menubuttonPadding + (menubuttonHeight/2);this.globalData.navHeight = statusHeight;},})},globalData: {share: false,  // 分享默认为falsenavHeight: 0, // 导航栏的高度menubuttonPaddingTop: 0 // 标题与状态栏的间隙高度}
})

组件内,在index.wxml键入以下代码:

<!--components/nav/index.wxml--><view class="nav" style="min-height: {{navBarHeight}}px;background-color:{{bgColor}}">// 设置返回按钮<navigator open-type="navigateBack"><view wx:if="{{isBackShow}}" style="padding-bottom: {{paddingTop}}px;color: {{Color}};transform: translateY({{paddingTop}}%);" class="nav-icon-back iconfont icon-fanhui"></view></navigator>// 设置标题文本<view style="padding-bottom: {{paddingTop}}px;color: {{Color}};transform: translateY({{paddingTop}}%);" class="nav-title">{{navText}}</view>// 设置插槽,使标题更加灵活多变<slot name="content"></slot>
</view>

设置样式:

/* components/nav/index.wxss *//* 引入iconfont */
@import "/styles/iconfont.wxss";.nav {position: fixed;top: 0%;left: 0%;width: 100vw;display: flex;justify-content: flex-start;// 下面将文本放置到导航栏底部,再设置按钮中间到状态栏之间距离高度的margin-bottom,即可实现文本高度居中align-items: flex-end; color: white;font-size: 32.5rpx;z-index: 999999999;
}.nav-icon-back {margin-left: 24rpx;color: white;font-size: 30rpx;
}.nav-title {margin-left: 27rpx;
}

核心index.js文件中的配置:

// components/nav/index.jsconst app = getApp();Component({/*** 启用插槽*/options:{multipleSlots: true},/*** 组件的属性列表*/properties: {isBackShow: {type: Boolean,value: false},navText: {type: String,value: ''},bgColor: {type: String,value: ''},Color: {type: String,value: '#FFFFFF'}},/*** 组件的初始数据*/data: {navBarHeight: app.globalData.navHeight,paddingTop: app.globalData.menubuttonPaddingTop},/*** 组件的方法列表*/methods: {}
})

至此大功告成啦!去使用看看吧!接着看。

三、场景使用

既然是自定义头部导航,我的目的是全局引用的,所以要取消小程序本身的头部导航,然后在全局配置中,使用该组件,就不用每一个页面全部去引入使用了:

// app.json
"window": {"backgroundTextStyle": "dark","backgroundColor": "#EEEEEE","navigationStyle": "custom", // 这里设置取消"enablePullDownRefresh": false},"usingComponents": {"nav": "./components/nav/index", // 全局引用自定义导航"tabar": "./components/tabar/index" // 埋笔,下一篇讲自定义底部tabbar}

接着在pages中随意使用吧~

<nav isBackShow="true" navText="your title" bgColor="#286EF2"></nav>

小程序 ---- (自定义头部导航)相关推荐

  1. (转载)微信小程序自定义头部导航栏

    本文转载自微信小程序自定义头部导航栏 微信小程序自定义头部导航栏 先看下demo的效果: 最终要实现的效果: 在tabbar页面不显示左侧按钮: 分享出去的页面进入后不显示左侧返回按钮: 点击返回按钮 ...

  2. 微信小程序自定义头部导航nav

    1.封装自定义nav导航组件 // app.js App({globalData: {systeminfo: false, //系统信息headerBtnPosi: false //头部菜单高度} } ...

  3. 微信小程序 - 自定义头部导航栏组件(详解) + iphoneX以上遮挡小黑条适配问题

    1. 导航栏计算: 导航栏总高度=状态栏高度+胶囊高度+(胶囊距顶距离-胶囊高度)*2 navHeight = statusBarHeight + menuButtonObject.height + ...

  4. 小程序自定义头部导航栏(“navigationStyle“: “custom“),自定义tabBar

    一.自定义顶部导航 1.在某些时候,不想要自带的顶部导航栏,需要自己定义,这时可以将自定义的导航栏做成一个组件,然后做一下初始配置,在每个页面引用,初始化,即可得到一个自定义的顶部导航栏: 2.代码部 ...

  5. 微信小程序 自定义头部导航栏

    1.微信自定义头部:app.json里面配置: "navigationStyle": "custom" 2.建立一个navigationBar的公共组件: A. ...

  6. 微信小程序-自定义底部导航

    代码地址如下: http://www.demodashi.com/demo/14258.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.c ...

  7. 微信小程序 自定义顶部导航栏标题 navigationStyle

    微信小程序 自定义顶部导航栏标题 单页面自定义导航栏 修改需要自定义的页面,的页面配置.json文件 全部页面自定义导航 修改公共页面配置app.json 单页面自定义导航栏 修改需要自定义的页面,的 ...

  8. uniapp开发微信小程序自定义顶部导航栏

    自定义导航栏渐变色,先上效果 使用uniapp开发小程序,在不同界面,要去对页面进行修改顶部导航栏. 比如说要去定义导航栏的背景颜色,常规的去定义导航栏背景颜色 全局定义导航栏 "windo ...

  9. 原声微信小程序自定义顶部导航栏 . 自定义navigationBar。 (单页面设置)

    本文实例为大家分享了微信小程序自定义导航栏的具体代码,供大家参考,具体内容如下 实现自定义大致需要以下?步骤: 1.在页面.JSON文件进行相关配置,以便去掉原生 "navigationSt ...

  10. 微信小程序自定义头部标题导航栏

    /*** 微信小程序头部自定义标题导航栏* * 参数:* pageTitle: 导航栏标题,默认不显示* navColor: 导航栏背景颜色,默认白色,透明为'transparent'属性值* noS ...

最新文章

  1. 做人留一线,日后好相见
  2. [zz]Ubuntu建立本地源实用案例
  3. 【C 语言】结构体 ( 结构体中嵌套一级指针 | 分配内存时先 为结构体分配内存 然后再为指针分配内存 | 释放内存时先释放 指针成员内存 然后再释放结构头内存 )
  4. springboot源码解析autoconfigure之WebMvcAutoConfiguration
  5. crawler_爬虫开发的曲线图
  6. python的基本语法数据类型有那些_python语法基础(基本数据类型)
  7. mysql 数据路由_node-路由操作mysql数据库
  8. jq之slideDown() stop()
  9. linux系统监控命令
  10. 关于CoreData的使用
  11. 邻接矩阵实现(有向邻接矩阵)、(无向邻接矩阵) 基于C++
  12. Android Mvp架构详解
  13. html小游戏开题报告,html5毕设开题报告
  14. 自制中文编程语言一(语言设计一)
  15. 宠物卡牌大赛奖励发放结束公告
  16. 智能门锁电路图_智能门锁原理图,智能锁工作原理科普
  17. 如何在Linux系统上装jdk1.8以及环境配置的方法步骤
  18. ISO8583报文(一)
  19. 【jzoj2220】【二分】愤怒的奶牛2(angry)
  20. 【闪亮的玻璃图标悬浮效果】

热门文章

  1. 蒋江伟:代码是我们最重要的资产!
  2. 朴灵:云计算的开发者视界中,OpenAPI 是绝对主角 | 凌云时刻
  3. 【快讯】中国首个开源协议----木兰隆重发布
  4. oracle undo head,一次悬挂事务的处理思路
  5. java nextprime_中国MOOC_零基础学Java语言_第7周 函数_1分解质因数
  6. 【指纹识别】基于matlab GUI指纹预处理+特征点提取【含Matlab源码 1693期】
  7. 【游戏】基于matlab绘制滚动点阵字幕(跑马灯)【含Matlab源码 911期】
  8. 【优化算法】变异策略的改进型花朵授粉算法【含Matlab源码 480期】
  9. 10寸 nuc972_新唐ARM9之NUC972学习历程之系统的搭建和BSP包的使用
  10. 马斯克神经网络转换器_通过转换数据来减少人工神经网络的复杂性