当前位置: 首页 > 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},
}

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

http://www.lryc.cn/news/277203.html

相关文章:

  • C++入门【26-C++ Null 指针】
  • Linux第14步_安装FTP服务器
  • Linux截图方法推荐
  • 在Gitee上维护Erpnext源
  • 2024.1.9 基于 Jedis 通过 Java 客户端连接 Redis 服务器
  • 软件测试|SQL ORDER BY排序利器使用
  • 苹果手机IOS软件应用IPA砸壳包提取完整教程
  • 「 网络安全术语解读 」内容安全策略CSP详解
  • Docker与微服务实战(基础篇)
  • 「实用分享」如何用Telerik UI组件创建可扩展的企业级WPF应用?
  • 【Docker基础三】Docker安装Redis
  • 【Flink精讲】Flink数据延迟处理
  • vue项目心得(复盘)
  • Linux——firewalld防火墙(一)
  • JMeter之Windows安装
  • 用通俗易懂的方式讲解:大模型 RAG 在 LangChain 中的应用实战
  • 正则表达式的语法
  • MyBatis分页插件的实现原理
  • Winform、WPF如何解决前端卡死问题
  • python内app自动化测试的局限性,该如何破局?
  • k8s的node亲和性和pod亲和性和反亲和性 污点 cordon drain
  • IntelliJ IDEA如何使用固定地址公网远程访问本地Mysql数据库
  • GIT - 清除历史 Commit 瘦身仓库
  • 物联网产品中,终端、网关、协议、PaaS、SaaS之间的关系
  • 6款实用的Git可视化管理工具
  • python_selenium零基础爬虫学习案例_知网文献信息
  • MindSpore Serving基于昇腾910B实现大模型部署
  • mysql原理--InnoDB的Buffer Pool
  • Redis不同环境缓存同一条数据,数据内部值不同
  • MySQL之导入、导出远程备份