小程序 - 如何自定义导航栏
时间:2022-07-23
本文章向大家介绍小程序 - 如何自定义导航栏,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
思路
自定义导航栏高度组成:状态栏(绿色部分)、导航栏(蓝色部分)
状态栏
通过调用 wx.getSystemInfoSync 获取
const res = wx.getSystemInfoSync()
this.setData({
statusBarHeight:res.statusBarHeight
})
导航栏
通过获取右上角胶囊的位置信息计算,navBarPadding为导航栏上下的间隙
let res = wx.getMenuButtonBoundingClientRect()
let navBarPadding = (res.top - this.data.setStatusBarHeight) * 2
this.setData({
navBarHeight: res.height + navBarPadding
})
代码
app.js:
App({
onLaunch () {
this.setStatusBarHeight()
this.setNavBar()
},
//设置系统状态栏高度
setStatusBarHeight(){
try {
const res = wx.getSystemInfoSync()
this.globalData.statusBarHeight = res.statusBarHeight
}catch(error){
console.log(error)
}
},
//设置导航栏height
setNavBar(){
let res = wx.getMenuButtonBoundingClientRect()
let navBarPadding = (res.top - this.globalData.statusBarHeight) * 2
this.globalData.navBarHeight = res.height + navBarPadding
},
globalData: {
statusBarHeight: 20,
navBarHeight: 44
}
})
wxml:
<view class="top-bar-wrap">
<view class="top-bar-main" style="padding-top:{{statusBarHeight}}px;height:{{navBarHeight}}px">
自定义导航栏
</view>
</view>
wxss:
.top-bar-wrap{
z-index: 9999;
position: fixed;
top: 0;
left: 0;
width: 100%;
}
.top-bar-main{
width: 100%;
display: flex;
justify-content: center;
align-items: center;
color:#fff;
}
js:
const app = getApp()
Component({
data: {
statusBarHeight: app.globalData.statusBarHeight,
navBarHeight: app.globalData.navBarHeight
}
})
最后
setStatusBarHeight、setNavBar这两个方法最好写到app.js中,获取好放在app.globalData中,这两个高度可能不止自定义导航栏需要用到。
比如使用了自定义导航栏的页面,因为自定义导航栏是fixed定位脱离文档流,导致整个页面就会上移,所以要给页面加上padding-top,高度跟自定义导航栏的高度一致,即 statusBarHeight + navBarHeight。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Fail to start qos server: dubbo version: current host: java.net.BindException:
- JAVA JDBC Template的使用
- 《sql必知必会》——读书笔记(2)
- 2.通过QOpenGLWidget绘制三角形
- 树莓派基础实验16:霍尔传感器实验
- 1.opengl绘制三角形
- dubbo本地直连调试注意点
- Tomcat的使用及服务器的一些基础知识
- fastJson 之JSONObject.toJavaObject()方法不能解析嵌套自定义list对象
- 文件包含漏洞学习总结(结尾有实例)
- 树莓派基础实验17:温度传感器实验
- Java Servlet详解(体系结构+注解配置+生命周期)
- RabbitMq如何确保消息不丢失
- 《sql必知必会》——读书笔记(4)
- AkShare-债券数据-国债期货可交割券相关指标