微信头部导航栏可能通过json配置:
(文档:https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/page.html)

但是有时候我们项目需求可能需要自定义头部导航栏,如下图所示:



分析上图,我得到如下信息:
Android 跟 iOS 有差异,表现在顶部到胶囊按钮之间的距离差了 6pt
胶囊按钮高度为 32pt, iOS 和 Android 一致

如何计算
导航栏分为状态栏和标题栏,只要能算出每台手机的导航栏高度问题就迎刃而解

导航栏高度 = 胶囊按钮高度 + 状态栏到胶囊按钮间距 * 2 + 状态栏高度

注:由于胶囊按钮是原生组件,为表现一致,其单位在各种手机中都为 px,所以我们自定义导航栏的单位都必需是 px(切记不能用
rpx),才能完美适配。

现在具体说一下实现步骤及使用方法:
步骤:

1.在 app.json 里面把 "navigationStyle" 设置为 "custom"
这样子之后就只会保留右上角胶囊按钮了。

2.计算相关值

因为在不同的手机型号头部那条栏目高度可能不一致,所以为了我们适配更多型号,我们需要计算3个值:

如下图:

  1. 整个导航栏的高度;

  2. 胶囊按钮与顶部的距离;

  3. 胶囊按钮与右侧的距离。

小程序可以通过 wx.getMenuButtonBoundingClientRect() 获取胶囊按钮的信息  和 wx.getSystemInfo() 获取设备信息。

如下图:

通过这些信息我们可以计算出上面说的3个值:

  1. 整个导航栏高度 = statausBarHeight + height + (top-statausBarHeight )*2;

  2. 胶囊按钮与顶部的距离 = top;

  3. 胶囊按钮与右侧的距离 = windowWidth - right。

实例:






©著作权归作者所有:来自51CTO博客作者wx605879fdc8dae的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 【微信小程序】自定义导航栏(一)
  2. Linux安装
  3. 0111 轮播图翻页按钮和鼠标事件
  4. 安装Kali linux
  5. Dynamics CRM定制子网格添加按钮实例之一
  6. 介绍Dynamics 365/Power Apps生成PDF的功能
  7. 如何解决Plao Alto防火墙的V*P*N客户端Global Protect成功连接后
  8. JavaScript初学习/之classList:动态设置元素类、dataset: 读写自
  9. JavaScript 点击事件 - 一个按钮触发另一个按钮

随机推荐

  1. 掌握JavaScript中的事件监听
  2. JavaScript中的对象描述符
  3. 在JavaScript中访问PHP变量[重复]
  4. JQuery Image滑块从json加载图片
  5. 如何在sap.m.Datepicker中设置与上一行相
  6. 由浅到深的分析Javascript OO之写类方式
  7. JavaScript数组操作函数方法详解
  8. 在图像映射中的背景图像
  9. AngularJS错误:模块ngAnimate不可用
  10. 在phonegap上从服务器获取数据