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


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 相关文章推荐
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
Nov 06 Javascript
解决jquery .ajax 在IE下卡死问题的解决方法
Oct 26 Javascript
Javascript 构造函数,公有,私有特权和静态成员定义方法
Nov 30 Javascript
基于jquery的blockui插件显示弹出层
Apr 14 Javascript
js中设置元素class的三种方法小结
Aug 28 Javascript
jquery实现拖拽调整Div大小
Jan 30 Javascript
纯js实现重发验证码按钮倒数功能
Apr 21 Javascript
JavaScript从0开始构思表情插件
Jul 26 Javascript
PhotoSwipe异步动态加载图片方法
Aug 25 Javascript
JavaScript 闭包详细介绍
Sep 28 Javascript
JavaScript轻松创建级联函数的方法示例
Feb 10 Javascript
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
Sep 15 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
PHP多线程抓取网页实现代码
2010/07/22 PHP
PHP5 的对象赋值机制介绍
2011/08/02 PHP
一个好用的PHP验证码类实例分享
2013/12/27 PHP
浅析PHP文件下载原理
2014/12/25 PHP
微信access_token的获取开发示例
2015/04/16 PHP
PHP版本常用的排序算法汇总
2015/12/20 PHP
php实现文件管理与基础功能操作
2017/03/21 PHP
laravel-admin 实现在指定的相册下添加照片
2019/10/21 PHP
基于jQuery的淡入淡出可自动切换的幻灯插件
2010/08/24 Javascript
Jquery显示、隐藏元素以及添加删除样式
2013/08/09 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
js检查是否关闭浏览器的方法
2016/08/02 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
2016/08/30 Javascript
js多个物体运动功能实例分析
2016/12/20 Javascript
详解vue中组件参数
2018/07/09 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
2019/01/19 Javascript
Vue实现穿梭框效果
2020/09/30 Javascript
python实现时间o(1)的最小栈的实例代码
2018/07/23 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
2019/05/10 Python
Win10下Python3.7.3安装教程图解
2019/07/08 Python
Python使用lambda表达式对字典排序操作示例
2019/07/25 Python
关于numpy数组轴的使用详解
2019/12/05 Python
python nohup 实现远程运行不宕机操作
2020/04/16 Python
keras 自定义loss层+接受输入实例
2020/06/28 Python
python中最小二乘法详细讲解
2021/02/19 Python
CSS3实现可关闭的下拉手风琴菜单效果
2015/08/31 HTML / CSS
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
浅析HTML5 Landmark
2020/09/11 HTML / CSS
Corelle官方网站:购买康宁餐具
2016/11/02 全球购物
印尼购物网站:iLOTTE
2019/10/16 全球购物
英语简历自我评价
2014/01/26 职场文书
自行车广告词大全
2014/03/21 职场文书
学校食堂管理制度
2015/08/04 职场文书
2019公司管理制度
2019/04/19 职场文书
javascript canvas实现雨滴效果
2021/06/09 Javascript
MySQL中连接查询和子查询的问题
2021/09/04 MySQL