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


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 相关文章推荐
游戏人文件夹程序 ver 3.0
Jul 14 Javascript
jquery 表单下所有元素的隐藏
Jul 25 Javascript
JavaScript 数组运用实现代码
Apr 13 Javascript
浅谈Javascript面向对象编程
Nov 15 Javascript
js中的hasOwnProperty和isPrototypeOf方法使用实例
Jun 06 Javascript
jquery中使用循环下拉菜单示例代码
Sep 24 Javascript
js在指定位置增加节点函数insertBefore()用法实例
Jan 12 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
Feb 17 Javascript
js密码强度校验
Nov 10 Javascript
jQuery实现带玻璃流光质感的手风琴特效
Nov 20 Javascript
Ionic+AngularJS实现登录和注册带验证功能
Feb 09 Javascript
如何抽象一个Vue公共组件
Oct 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
做个自己站内搜索引擎
2006/10/09 PHP
PHP中的错误处理、异常处理机制分析
2012/05/07 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
2016/01/25 PHP
php面向对象的用户登录身份验证
2017/06/08 PHP
laravel自定义分页效果
2017/07/23 PHP
document对象execCommand的command参数介绍
2006/08/01 Javascript
javascript import css实例代码
2008/07/18 Javascript
js实现连续英文字符自动换行兼容ie6 ie7和firefox
2013/09/06 Javascript
红米手机抢购的js代码
2014/03/10 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
2014/05/20 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
2015/10/16 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
angular 组件通信的几种实现方式
2018/07/13 Javascript
Vue.js中的组件系统
2019/05/30 Javascript
[02:24]DOTA2痛苦女王 英雄基础教程
2013/11/26 DOTA
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
Python中if __name__ == &quot;__main__&quot;详细解释
2014/10/21 Python
批处理与python代码混合编程的方法
2016/05/19 Python
python实现最长公共子序列
2018/05/22 Python
Python装饰器知识点补充
2018/05/28 Python
python 反向输出字符串的方法
2018/07/16 Python
Python中xml和json格式相互转换操作示例
2018/12/05 Python
Python配置虚拟环境图文步骤
2019/05/20 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
GOLFINO英国官网:高尔夫服装
2020/04/11 全球购物
汇科协同Java笔试题
2012/03/31 面试题
纪检干部对照检查材料
2014/08/22 职场文书
2014最新开业庆典策划方案(5篇)
2014/09/15 职场文书
科学发展观标语
2014/10/08 职场文书
交通局领导班子群众路线教育实践活动对照检查材料思想汇报
2014/10/09 职场文书
考研英语复习计划
2015/01/19 职场文书
党委工作总结2015
2015/04/27 职场文书
2015年工会工作总结范文
2015/07/23 职场文书
《家》读后感:万惜拯救,冷暖自知
2019/09/25 职场文书