微信小程序系列之自定义顶部导航功能


Posted in Javascript onMay 21, 2019

具备基础

vue框架:vue官方文档

mpvue框架:mpvue官方文档

全局配置

•找到全局的app.json文件,在配置中添加如下内容:

"navigationStyle": "custom"
"window": {
 "backgroundTextStyle": "light",
 "navigationBarBackgroundColor": "#fff",
 "navigationBarTitleText": "WeChat",
 "navigationBarTextStyle": "black",
 "navigationStyle": "custom" // 这个配置
}

组件思维

•使用mpvue开发小程序,src目录下默认会生成一个components文件夹;
•由于自定义组件所有webview页面都要使用,所以把它归类为公共组件;
•可以在components文件夹下新建一个common文件夹,专门放置公共组件,如下:

├── src                    源码目录 
│  ├── main.js             入口js文件
│  ├── app.json            全局配置
│  ├── components          组件目录
│  │  └── common           公共组件
          └── topBar.vue   顶部自定义导航复制代码

组件内容

•由于不同设备statusBarHeight值可能有差异,自定义组件的高度取决于statusBarHeight值;
•找到全局App.vue文件,在这里面执行小程序的onLaunch生命周期(监听小程序初始化);
•具体获取方法如下:

const that = this
let systemInfo = wx.getSystemInfoSync()
that.setBarHeight(systemInfo.statusBarHeight)

• 通过vuex存储statusBarHeight值,不清楚vuex如何在小程序中使用的可参考mpvue如何使用vuex;
•.vue文件的html相关结构如下:

<template>
 <div class="top-bar">
 <div class="bar" :style="'height:'+(systemInfo.barHeight+46)+'px;'">
  <span class="title">{{title}}</span>
  <button v-if="way && way==='/pages/mine/main'" open-type="getUserInfo" @getuserinfo="toMine">
  <image class="icon" :src="icon" />
  </button>
  <image v-else-if="way && way!=='/pages/mine/main'" class="icon-back" :src="icon" @tap="toPage(way)" />
  <span v-else></span>
 </div>
 <p class="place-holder" :style="'padding-top:'+(systemInfo.barHeight+6)+'px;'"></p>
 </div>
</template>

•结构分析如下,可看做两部分,一部分是fixed定位在顶部的class="bar"的div;另一部分是class="place-holder"的p;
•之所以要放一个p标签,是因为不用每次引入topBar.vue时都要考虑class="bar"的div都会遮挡内容区的问题;
•因此将p标签height:80rpx;加上padding-top的6px;正好等于class="bar"的div的高度;

微信小程序系列之自定义顶部导航功能 

微信小程序系列之自定义顶部导航功能 

•由于项目中左边放置的是进入个人中心的功能,所以左边头像必须使用button来出发获取用户信息的授权;
•同时需要考虑到左边不是头像的情况,这时就可以用到vue的props属性,具体props值,看下面代码,默认是给向左的箭头,表示返回上一页;

props: {
 title: {
 type: String,
 required: true
 },
 icon: {
 type: String,
 default: require('@static/icon/icon_back.png')
 },
 way: {
 type: String,
 default: null
 }
}

•如果way啥也不传则左侧不显示任何icon;
•如果way传入的是进入个人中心的路由,则走button结构上面的事件;
•如果way传入的是‘back',则显示返回的向左箭头。

问题总结

•该公共topBar.vue组件对ipad不能有效适配;
•fixed定位在安卓手机上下拉刷新时,结构会跟着下拉,例如本文的自定义导航,下拉刷新的时候导航会跟着下拉然后再fixed到顶部(开发者工具上没问题,真机有问题);

以上所述是小编给大家介绍的微信小程序系列之自定义顶部导航功能,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
js获取客户端网卡的IP地址、MAC地址
Mar 26 Javascript
PHPExcel中的一些常用方法汇总
Jan 23 Javascript
Jquery中$.post和$.ajax的用法小结
Apr 28 Javascript
js制作带有遮罩弹出层实现登录注册表单特效代码分享
Sep 05 Javascript
全面解析Bootstrap手风琴效果
Apr 17 Javascript
JavaScript匿名函数之模仿块级作用域
Dec 12 Javascript
对js中回调函数的一些看法
Aug 29 Javascript
微信小程序实战之上拉(分页加载)效果(2)
Apr 17 Javascript
浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
Jul 22 jQuery
javaScript产生随机数的用法小结
Apr 21 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
Feb 13 Javascript
谈谈JavaScript中的垃圾回收机制
Sep 17 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
May 21 #Javascript
微信小程序websocket实现即时聊天功能
May 21 #Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
May 21 #Javascript
taro开发微信小程序的实践
May 21 #Javascript
element-ui表格合并span-method的实现方法
May 21 #Javascript
详解关于表格合并span-method方法的补充(表格数据由后台动态返回)
May 21 #Javascript
浅谈React Native 传参的几种方式(小结)
May 21 #Javascript
You might like
推荐几部必看的DC动画电影
2020/03/03 欧美动漫
Terran剧情介绍
2020/03/14 星际争霸
PHP的单引号和双引号 字符串效率
2009/05/27 PHP
PHP 日,周,月点击排行统计
2012/01/11 PHP
php操作xml入门之xml标签的属性分析
2015/01/23 PHP
php+mysqli使用面向对象方式更新数据库实例
2015/01/29 PHP
PHP中使用array函数新建一个数组
2015/11/19 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
PHP如何通过带尾指针的链表实现'队列'
2020/10/22 PHP
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
ie8模式下click无反应点击option无反应的解决方法
2014/10/11 Javascript
Jquery zTree 树控件异步加载操作
2016/02/25 Javascript
AngularJS实现textarea记录只能输入规定数量的字符并显示
2016/04/26 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
2016/10/11 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
2016/12/02 Javascript
vue项目中的webpack-dev-sever配置方法
2017/12/14 Javascript
python3.3实现乘法表示例
2014/02/07 Python
Python 爬虫学习笔记之单线程爬虫
2016/09/21 Python
python与php实现分割文件代码
2017/03/06 Python
Python进度条实时显示处理进度的示例代码
2018/01/30 Python
python异步实现定时任务和周期任务的方法
2019/06/29 Python
Python实现栈和队列的简单操作方法示例
2019/11/29 Python
python 解决pycharm运行py文件只有unittest选项的问题
2020/09/01 Python
美国花布包包品牌:Vera Bradley
2017/08/11 全球购物
专门经营化妆刷的美国彩妆品牌:Sigma Beauty
2017/09/11 全球购物
雅高酒店中国:Accorhotels.com China
2018/03/26 全球购物
商务日语专业毕业生求职信
2013/10/26 职场文书
我爱我校演讲稿
2014/05/21 职场文书
小组名称和口号
2014/06/09 职场文书
工作散漫检讨书
2014/09/16 职场文书
2014年个人师德工作总结
2014/12/04 职场文书
小学家长通知书评语
2014/12/31 职场文书
借条如何写
2015/05/26 职场文书
幼儿园毕业典礼家长致辞
2015/07/29 职场文书
Python 数据科学 Matplotlib图库详解
2021/07/07 Python
css如何把元素固定在容器底部的四种方式
2022/06/16 HTML / CSS