自定义微信小程序头部导航栏,有几种方式

方式一

{
"navigationStyle": "custom" // 将navigationStyle从默认default改为custom
}

定义此方法后,头部的导航栏会去掉,导航栏下的元素会直接向上移动到原导航栏的位置,可以再app.json配置成全局沉浸式导航栏,以及在单页面配置沉浸式导航栏。

方式二

使用组件

这里使用vant组件作为演示





组件配置的NavBar,样式在官方文档上有说明,根据文档说明修改样式即可。

官方文档:https://vant-contrib.gitee.io/vant-weapp/#/nav-bar

机型适配

由于自定义navBar了,导航栏下面的元素会直接向上偏移,需要离顶部的距离才可以恢复到正常的位置,此时设置的距离根据不同的机型,位置也会不同,所以这里就需要做到机型适配。

方式一:

根据微信小程序胶囊到顶部以及胶囊的高度,算出navBar下的内容到顶部的距离

// js
let pillHeight = wx.getMenuButtonBoundingClientRect().top // 胶囊到顶部的高度
let pill = wx.getMenuButtonBoundingClientRect().height // 胶囊的高度
this.setData({topHeight : pillHeight +pill }) // 页面 动态设置margin-top高度
<view class="content_bg" style="margin-top: {{capsuleHeight}}px;">内容</view>

方式二:

根据小程序头部的高度加导航高度的距离动态计算内容到顶部的距离

// js
wx.getSystemInfo({
success: res => {
let navWindowHeight = res.statusBarHeight + 46; // 小程序头部的高度 + 导航高度
this.setData({capsuleHeight : navWindowHeight }) // 赋值高度
}, fail(err) {
console.log(err);
}
// 页面
<view class="content_bg" style="margin-top: {{capsuleHeight }}px;">内容</view>

由于机型的不同,动态计算的高度也不同,不同机型对胶囊到顶部的高度都有差异,而且获取到的胶囊到顶部或者小程序头部的高度的值单位是 px ,所以直接将获取到的值赋值给距离顶部的距离即可,否则在动态计算高度的时候,px不会动态适配屏幕的大小变化,目前来说用方式二适配率高一些,在开发的时候需要根据实际情况,做不同的调整。


动态计算TabBar的高度

  // tabbar高度
getTabHei() {
wx.getSystemInfo({
success: (res) => {
console.log(res)
this.setData({
tabBatHeight: res.screenHeight - res.safeArea.bottom + 50
})
}
})

将计算出来的tabBatHeight直接写在页面的行内样式中即可

微信小程序自定义导航栏机型适配的更多相关文章

  1. 微信小程序——自定义导航栏

    微信头部导航栏可能通过json配置: 但是有时候我们项目需求可能需要自定义头部导航栏,如下图所示: 现在具体说一下实现步骤及方法: 步骤: 1.在 app.json 里面把 "navigat ...

  2. 微信小程序自定义导航栏组件,完美适配所有手机,可实现各种功能和情况

    背景 在做小程序时,关于默认导航栏,我们遇到了以下的问题: Android.IOS 手机对于页面 title 的展示不一致,安卓 title 的显示不居中 页面的 title 只支持纯文本级别的样式控 ...

  3. 微信小程序自定义导航栏

    微信小程序需要自定义导航栏,特别是左上角的自定义设置,可以设置返回按钮,菜单按钮,配置如下: 1.在app.json的window属性中增加: navigationStyle:custom 顶部导航栏 ...

  4. 微信小程序自定义导航栏组件

    1.首先,要在json文件中设置为自定义的形式 "navigationStyle": "custom" 2.计算相关值 导航栏分为状态栏和标题栏,只要能算出每台 ...

  5. 微信小程序 - 自定义导航栏(提示)

    点击下载: 自定义导航栏示例

  6. 获取不同机型微信小程序状态栏+导航栏高度

    获取不同机型微信小程序状态栏+导航栏高度 一. 前言 很多时候我们开发微信小程序,都需要先知道状态栏和导航栏的高度,才能去做其他功能 二. 获取微信小程序状态栏高度 用wx.getSystemInfo ...

  7. 微信小程序 自定义导航组件 nav头部 全面屏设计

    nav-dynamic 微信小程序自定义nav头部组件:适配全面屏设计: 实现功能 初始进入页面时,展示初始状态下的nav样式: 页面滚动时,监听页面滚动事件,展示滚动状态下的nav样式: 根据配置字 ...

  8. Taro 小程序 自定义导航栏

    在小程序中,有的页面需求可能需要我们做一个自定义的导航栏, 今天就来踩一踩坑 首先需要在app.js 中给全局的导航栏隐藏, // app.js window: { navigationStyle: ...

  9. 微信小程序底部导航栏部署

    在微信小程序开发app.json(app.json它是定义全局页面) 只是用来部署微信底部的图标,最多不能大于五个 "tabBar":{ "selectedColor&q ...

  10. 微信小程序底部导航栏(tabbar)

    在app.json处设置“tabBar”,例子如下: { "pages": [ "pages/index/index", "pages/pages1/ ...

随机推荐

  1. winform的TabContorl的TabPage动态添加滚动条

    关键属性 AutoScrollMinSize  private int minWidth = 800; private int minHeight = 600; List<Form> li ...

  2. 单例模式实现的多种方式、pickle序列化模块、选课系统需求分析等

    目录 单例模式实现的多种方式 方式一: 方式二: 方式三 方式四 pickle序列化模块 选课系统需求分析 功能提炼 选课系统架构设计 三层架构 选课系统目录搭建 选课系统功能搭建 单例模式实现的多种 ...

  3. Axios +Vue + themeleay

    1.pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId& ...

  4. 腾讯会议如何在Linux下的安装与使用

    腾讯会议官网https://meeting.tencent.com/download?mfrom=OfficialIndex_TopBanner1_Download下载 腾讯会议官网只提供了deb版的 ...

  5. MyEclipse连接MySQL

    在官网http://www.mysql.com/downloads/下载数据库连接驱动 本文中使用驱动版本为mysql-connector-java-5.1.40 一.创建一个java测试项目MySQ ...

  6. 使用 Rainbond 搭建本地开发环境

    在开发之前,你需要在本地安装各种开发工具和服务,比如:Mysql.Redis.Nacos 等等,我们都知道在个人电脑上安装这些服务相当的繁琐,可能会遇到很多问题,环境问题.依赖问题等等. 在需要团队协 ...

  7. 2.5:Python常用内置数据结构、多维数组ndarray、Series和DataFrame

    一.Python内置数据结构 1.赋值生成列表 la=[1,2,3,4] la 2.强制转换为列表 lb=list("Hello") lb 3.推导式生成列表 s="ab ...

  8. 最新 2022 年 Kubernetes 面试题高级面试题及附答案解析

    题1:Kubernetes Service 都有哪些类型? 通过创建Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并且将请求负载分发到后端的各个容器应用上.其主要类型有: C ...

  9. Bootstrap响应式相关

    bootstrap响应式布局实现原理:百分比布局+媒体查询  | 栅格系统 bootstrap和vue响应式布局的区别: 1. bootstrap 栅格系统,简,缺少组件 2. vue 速度快,组件多 ...

  10. 使用命令行运行用例时提示python.exe: Error while finding module specification for 'testcase_1.Test'.....

    文件路径 输入命令 D:\demo>python -m unittest unittest_1/testcase_1.Test结果提示 ModuleNotFoundError: No modul ...