自定义全局组件:解决微信小程序元素被头部栏遮挡的问题

前言:用于解决微信小程序元素内容被顶部栏遮挡的问题,在不同型号手机分别撑起一定高度与头部自定义导航栏一致的盒子
在这里插入图片描述
1、封装一个组件(如:uni-header-box.vue)

<template>
	//1、封装一个组件
	<view :style="style" />
</template>
<script>
	export default {
		data() {
			return {
				/* 设定状态栏默认高度 */
				statusBarHeight: 20,/* 状态栏高度 */
				navBarHeight: 45,/* 导航栏高度 */
				windowWidth: 375,/* 窗口宽度 */
			};
		},
		computed: {
			style() {
				var StatusBarHeight= this.statusBarHeight;
				var NavBarHeight= this.navBarHeight;
				var style = "";
				// 除了h5、app、mp-alipay三个的情况下执行,区别ifdef
				// #ifndef H5 || APP-PLUS || MP-ALIPAY
					style = `${style}margin-top:${StatusBarHeight+NavBarHeight}px;`;
				// #endif
				return style
			}
		},
		created() {
			let statusBarObj = this.liuHaiP()
			this.statusBarHeight = statusBarObj.statusBarHeight
			this.navBarHeight = statusBarObj.navBarHeight
			this.windowWidth = statusBarObj.windowWidth
		},
		methods:{
			//看手机是否为刘海屏
			liuHaiP(){
				// 获取手机系统信息
				const systemInfo = uni.getSystemInfoSync()
				let statusBarObj = {
					isFit: false,
					statusBarHeight: 20,/* 状态栏高度 */
					navBarHeight: 45,/* 导航栏高度 */
					windowWidth: 375,/* 窗口宽度 */
				}
				// 设置状态栏高度(H5顶部无状态栏小程序有状态栏需要撑起高度)
				statusBarObj.statusBarHeight = systemInfo .statusBarHeight
				statusBarObj.windowWidth = systemInfo .windowWidth
				// 除了h5、app、mp-alipay的情况下执行
				// #ifndef H5 || APP-PLUS || MP-ALIPAY
				// 获取胶囊的位置
				const menuButtonInfo = uni.getMenuButtonBoundingClientRect()
				// (胶囊底部高度 - 状态栏的高度) + (胶囊顶部高度 - 状态栏内的高度) = 导航栏的高度
				statusBarObj.navBarHeight = (menuButtonInfo.bottom - systemInfo .statusBarHeight) + (menuButtonInfo.top - systemInfo .statusBarHeight)
				statusBarObj.windowWidth = menuButtonInfo.left
				// #endif
				return statusBarObj
			}
		}
	}
</script>

<style>

</style>

2、在main.js里面全局注册组件

// 注册全局组件
import uniHeaderBox from '@/components/uni-header-box.vue'

Vue.component('uni-header-box', uniHeaderBox)

3、在页面引用,像标签一样直接使用即可

<uni-header-box></uni-header-box>
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Spring_z7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值