背景:

小程序顶部导航栏那里的样式和功能都是小程序自带的,当我们在pages.json里的pages里新加一条页面配置时,会自动生成一个带顶部导航栏的空白页面,当然也可以再配置里"navigationBarTitleText","navigationBarTextStyle","navigationBarBackgroundColor",来改变导航栏标题字体,标题字体颜色,导航栏背景颜色,其实上面那些配置一般的应用场景下够用了, 但是有时候产品就偏偏不想用他的默认样式, 想在那里放张背景图, 放个输入框, 放个按钮啥的,这时候就需要自定义导航条了

实现:

  1. pages.json里配置navigationStyle为custom
    {
    "path": "pages/index/index",
    "pageOrientation": "landscape",
    "style": {
    "navigationStyle":"custom",
    }
    },
  2. 如上配置好后即可实现自定义导航栏,不过直接写的话会有机型样式的差异, 如iPhoneX等机型的刘海屏会遮住部分内容,处理办法是获取导航栏信息,根据小程序右上角的胶囊定位, 代码如下
    onLaunch: function() {// 获取系统信息
    const systemInfo = uni.getSystemInfoSync();
    // 获取胶囊按钮的位置
    const menuButtonInfo = uni.getMenuButtonBoundingClientRect();
    // 导航栏高度 = 状态栏到胶囊的间距( 胶囊距上距离 - 状态栏高度 )*2 + 胶囊高度 + 状态栏高度
    this.globalData.navBarHeight = (menuButtonInfo.top - systemInfo.statusBarHeight) * 2 + menuButtonInfo
    .height + systemInfo.statusBarHeight;
    this.globalData.menuRight = systemInfo.screenWidth - menuButtonInfo.right;
    this.globalData.menuBotton = menuButtonInfo.top - systemInfo.statusBarHeight;
    this.globalData.menuHeight = menuButtonInfo.height;
        },
    globalData: {
    navBarHeight: </span>0, <span style="color: #008000;">//</span><span style="color: #008000;"> 导航栏高度</span>
    menuRight: 0, <span style="color: #008000;">//</span><span style="color: #008000;"> 胶囊距右方间距(方保持左、右间距一致)</span>
    menuBotton: 0, <span style="color: #008000;">//</span><span style="color: #008000;"> 胶囊距底部间距(保持底部间距一致)</span>
    menuHeight: 0, <span style="color: #008000;">//</span><span style="color: #008000;"> 胶囊高度(自定义内容可与胶囊高度保证一致)</span>
    },</pre>

    这样就获取到了所需信息并存到了globalData全局变量里
    在页面或组件里用到这些信息


    export default {
    data() {
    return {
    // 机型顶部适配
    navBarHeight: getApp().globalData.navBarHeight,
    menuRight: getApp().globalData.menuRight,
    menuBotton: getApp().globalData.menuBotton,
    menuHeight: getApp().globalData.menuHeight, }
        }</span><span style="color: #000000;">
    }</span></pre>

    思路如上, 部分样式代码没贴上去自行添加即可

关于uni-app开发的微信小程序顶部导航条机型适配的更多相关文章

  1. 开发一个微信小程序教程

    一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可. 2.注册成功后进入首页,在 小程序发布流程->小程序 ...

  2. 开发一个微信小程序项目教程

    一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可.2.注册成功后进入首页,在 小程序发布流程->小程序开 ...

  3. 如何开发一个微信小程序

    一.概述     特点:对商家来说,小程序的开发成本低(有丰富的组件.api等).运营成本低(有数据日志等).稳定.互动流畅,便于分享.传播(基本微信平台的大量用户).对用户来说,扫码即可获取服务,随 ...

  4. 全栈开发工程师微信小程序-中(下)

    全栈开发工程师微信小程序-中(下) 微信小程序视图层 wxml用于描述页面的结构,wxss用于描述页面的样式,组件用于视图的基本组成单元. // 绑定数据 index.wxml <view> ...

  5. 全栈开发工程师微信小程序-中(中)

    全栈开发工程师微信小程序-中(中) 开放能力 open-data 用于展示微信开放的数据 type 开放数据类型 open-gid 当 type="groupName" 时生效, ...

  6. 全栈开发工程师微信小程序-中

    全栈开发工程师微信小程序-中 多媒体及其他的组件 navigator 页面链接 target 在哪个目标上发生跳转,默认当前小程序,可选值self/miniProgram url 当前小程序内的跳转链 ...

  7. 全栈开发工程师微信小程序-上(下)

    全栈开发工程师微信小程序-上(下) icon 图标 success, success_no_circle, info, warn, waiting, cancel, download, search, ...

  8. 全栈开发工程师微信小程序-上(中)

    全栈开发工程师微信小程序-上(中) width: 750rpx; 750rpx代表与屏幕等宽,rpx的缩写responsive pixel,这个单位是可以根据屏幕大小进行自适应调整的像素单位. 小程序 ...

  9. 开发一个微信小程序实例教程

    一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可.2.注册成功后进入首页,在 小程序发布流程->小程序开 ...

  10. android上instant app介绍 类似于微信小程序

    android上instant app介绍 类似于微信小程序instant app 是谷歌推出的类似于微信小程序(或者说小程序类似于instant app)的一项技术,用户无须安装应用,用完就走,同时 ...

随机推荐

  1. K8s试验环境搭建(一)

    一.kubernetes简介 1.什么是kubernetes? kubernetes是google公司用go语言开发的一套容器编排系统,简称k8s:它主要用于容器编排:所谓容器编排简单的我们可以理解为 ...

  2. 原创:USB HID读卡器数据解析(R321-13.56MHZ读卡器)

    1.工具准备 USB 监视软件:Device Monitoring Studio7.25 PC端软件:单片机多功能调试助手 2.发送数据包 接收数据包 3.数据分析 usb hid(pc软件)发送帧( ...

  3. Mysql数据库基础第二章:(六)连接查询

    Mysql数据库基础系列 软件下载地址 提取码:7v7u 数据下载地址 提取码:e6p9 mysql数据库基础第一章:(一)数据库基本概念 mysql数据库基础第一章:(二)mysql环境搭建 mys ...

  4. centos7 部署 DNS 主从

    centos7 部署 DNS 主从 环境 名称 ip地址 cpu 内存 yz-dns-master 10.148.100.81 4c 8G yz-dns-slave 10.148.100.82 4c ...

  5. 循环4-for循环

    一.语法 for循环和while类似,常用于执行有限次数的循环,有两种语法结构, 1.变量列表循环 语法: for 变量名 in 变量取值列表 do 指令...... done 变量取值列表中的值,要 ...

  6. 检测sqlserver数据库是否能远程连通

    建立一个.udl的文件夹,双击打开.输入相关的连接字符串点击测试即可.

  7. 夜神模拟器连接不上adb的解决办法

    1.夜神模拟器连接不上adb的解决办法 转自 (https://www.jianshu.com/p/6041e64518a8) 最近给模拟器升级了版本,用了一段时间后,突然发现通过adb device ...

  8. 作业一:PCA降维练习

    作业一:PCA降维作业 代码 点击查看代码 #author:qiao_px #@Time 2022/10/31 16:11 #@File ceshiPCA.py import pandas as pd ...

  9. IDEA的主题插件

    Xcode-Dark Theme

  10. Day14-封装、继承、多态

    封装.继承.多态 一.封装 package Demo; //类 private私有 public class student { //属性私有 //名字 private String name; // ...