当前位置: 首页 > news >正文

uniapp自定义顶部导航并解决打包成apk后getMenuButtonBoundingClientRect方法失效问题

需求:要在app上的顶部导航提示哪里添加一些东西进去,用uniapp自带的肯定不行啊,所以自定义了所有的页面的顶部导航,之后自定义后用手机调试发现 uni.getMenuButtonBoundingClientRect()这个方法的top获取不到....网上找了很多种方法才实现,记录一下

1.自测手机上效果

 

 2.实现

在pages.json页面给所有需要顶部导航栏的添加自定义样式

    "enablePullDownRefresh": false,是否开发下拉刷新

    "navigationStyle": "custom":导航栏样式自定义

{"path": "pages/serve/index","style": {"enablePullDownRefresh": false,"navigationStyle": "custom"}}

3.封装+主要代码讲解

创建封装的Title.vue页面

// #ifndef H5 || APP-PLUS || MP-ALIPAY        // #endif

这个是预处理指令,这个指令的意思是:“如果H5APP-PLUSMP-ALIPAY这三个宏(或标识符)中的任何一个没有被定义,则执行以下的代码

uni.getSystemInfoSync():同步获取系统的信息

uni.getMenuButtonBoundingClientRect():方法来获取某个菜单按钮的边界信息。这个方法通常用于获取某个DOM元素的边界信息,包括其位置和尺寸。

			// #ifndef H5 || APP-PLUS || MP-ALIPAYlet menuButtonInfo = uni.getMenuButtonBoundingClientRect()this.titleBarHeight = (menuButtonInfo.top - this.statusBarHeight) * 2 + menuButtonInfo.height// #endif
<template><!-- 头部导航内容区域 --><view style="margin-bottom: 20rpx;" class="top-content"><view class="title-top"><view class="boxAndTop" :style="{height:statusBarHeight+'px'}"></view></view></view>
</template><script>export default {props: {titleName: {type: String,default: ''},},data() {return {// 状态栏高度statusBarHeight: 0,// 导航栏高度titleBarHeight: 82 + 11,menuFlag: false}},created() {//获取状态栏的高度let systemInfo = uni.getSystemInfoSync()this.statusBarHeight = systemInfo.statusBarHeightconsole.log(this.statusBarHeight,'状态栏的高度');// #ifndef H5 || APP-PLUS || MP-ALIPAYlet menuButtonInfo = uni.getMenuButtonBoundingClientRect()this.titleBarHeight = (menuButtonInfo.top - this.statusBarHeight) * 2 + menuButtonInfo.height// #endif},methods: {},}
</script><style lang="scss">.top-content {// position: fixed;height: 140rpx;.title-top {position: fixed;top: 0px;width: 100%;z-index: 999;height: 140rpx;background-color: #fff;}}</style>

4.在页面导入使用

	<Title titleName="设备管理" />	import Title from '@/component/Title.vue'
export default {components: {Title},
}

文章到此结束,希望对你有所帮助~

相关文章:

  • 华为“纯血”鸿蒙加速进场 高校、企业瞄准生态开发新风口
  • 安防监控EasyCVR视频融合/汇聚平台大华热成像摄像机智能告警上报配置步骤
  • 计算机算法贪心算法
  • 爆肝整理,接口测试+为什么要做接口测试总结,策底贯通...
  • 9.spring aop 原理
  • C++学习笔记(三十二):c++ 堆内存与栈内存比较
  • 什么是原生ip和广播ip
  • 记录汇川:H5U与Fctory IO测试8
  • 程序员英语 - 英文会议常用句型
  • Springboot+vue的毕业论文管理系统(有报告)。Javaee项目,springboot vue前后端分离项目
  • 国标28181平台的手机视频监控客户端的电子地图功能对比
  • 紫光展锐5G扬帆出海 | 欧洲积极拥抱更多5G选择
  • C++系列十五:字符串
  • leaflet学习笔记-缓冲区绘制(六)
  • 新能源汽车的三电指的是什么,作用有什么区别。
  • Java 网络编程(2):UDP 的使用
  • js如何打印object对象
  • LeetCode29.两数相除 JavaScript
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 编写高质量JavaScript代码之并发
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 每天10道Java面试题,跟我走,offer有!
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 用 Swift 编写面向协议的视图
  • 《天龙八部3D》Unity技术方案揭秘
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #define,static,const,三种常量的区别
  • (day 12)JavaScript学习笔记(数组3)
  • (编译到47%失败)to be deleted
  • (力扣题库)跳跃游戏II(c++)
  • (四)图像的%2线性拉伸
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • @Autowired和@Resource装配
  • @serverendpoint注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • [1]-基于图搜索的路径规划基础
  • [Android实例] 保持屏幕长亮的两种方法 [转]
  • [Editor]Unity Editor类常用方法
  • [HNOI2006]鬼谷子的钱袋
  • [iOS]让Xcode 4.2生成的app支持老的iOS设备(armv6)
  • [J2ME]url请求返回参数非法(java.lang.illegalArgument)
  • [java]删除数组中的某一个元素
  • [java基础揉碎]方法的重写/覆盖
  • [LeetCode]—Longest Palindromic Substring 最长回文子串
  • [nlp] 损失缩放(Loss Scaling)loss sacle
  • [office] Excel自带的编辑函数求和方法 #其他#媒体
  • [Python]闭包
  • [python-opencv] PNG 裁切物体