背景:

小程序顶部导航栏那里的样式和功能都是小程序自带的,当我们在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. 为什么Controller层注入的是Service接口,而不是ServiceImpl实现类

    转自csdn--https://blog.csdn.net/weixin_39565597/article/details/78078728 今天看代码发现,写法和自己理解的java写法不一致,就查找 ...

  2. iview table添加input框,且校验

    方法一 render渲染 { title: "用户名", key: "stockPrice", render: (h, params) => { retu ...

  3. 在datagridview中首列添加复选框

    //为dgv增加复选框列 DataGridViewCheckBoxColumn checkbox = new DataGridViewCheckBoxColumn(); //列显示名称 checkbo ...

  4. js-模态框的拖动

    效果如下: 代码如下: <div class="clickBtn">点击,弹出登录框</div> <div class="login&quo ...

  5. 北斗GPS授时系统技术及ntp时钟服务器(PTP)在电力系统中的应用

    北斗GPS授时系统技术及ntp时钟服务器(PTP)在电力系统中的应用 北斗GPS授时系统技术及ntp时钟服务器(PTP)在电力系统中的应用 技术交流:岳峰 15901092122 bjhrkc@126 ...

  6. 笛卡尔树 Cartesian tree

    给个板子题 笛卡尔树是这样的一种数据结构:对于 \(n\) 个二元组 \((key, value)\) 形成的笛卡尔树,满足如下性质 其 \(key\) 值满足二叉搜索树性质 (中序排列单调递增),\ ...

  7. 使用Latex错误集

    1.写公式的函数--align(最怕空行) (1)align用法示例 \begin{align} & \left\{ \begin{array}{ll} \sup\limits_{\tilde ...

  8. <二>JMeter/Navicat for MYSQL运行案例

    一.JMeter 1. 下载地址:http://jmeter.apache.org/download_jmeter.cgi 2. 选择适合的版本进行下载,如下: 3. 将下载好的压缩包解压到任意文件夹 ...

  9. mysql-列拆分

    tableA id warehouse_id 1 1,2 想要的结果: id warehouse_id 1 1 2 2 select *(其他的字段), substring_index(substri ...

  10. 前端通过input 输入框实现动态添加行 , 键盘上下左右点击可同步操作中心位置

    1. input 代码 ,我们项目组的input封装了,不过不影响使用 通过 @keyup 事件绑定show方法,需要将当前行的信息以及index传递,方便操作 另外要单独给这些需要操作的输入框添加c ...