<template>
<view class="padding-safe-area-inset">
<view class="text-background">我在状态栏下边</view>
<view class="content">
<text>此页面使用env()函数适配安全区域,仅在app平台生效。</text>
<text>safe-area-inset-top: {{safeareaInsetTop}}px</text>
<text>safe-area-inset-left: {{safeareaInsetLeft}}px</text>
<text>safe-area-inset-right: {{safeareaInsetRight}}px</text>
<text>safe-area-inset-bottom: {{safeareaInsetBottom}}px</text>
</view>
<view class="text-background">我在导航栏上边</view>
</view>
</template>
<script setup lang="uts">
const safeareaInsetTop = ref(0)
const safeareaInsetLeft = ref(0)
const safeareaInsetRight = ref(0)
const safeareaInsetBottom = ref(0)
const instance = getCurrentInstance()
onReady(() => {
const page = instance?.proxy?.$page
safeareaInsetTop.value = page?.safeAreaInsets.top ?? 0
safeareaInsetLeft.value = page?.safeAreaInsets.left ?? 0
safeareaInsetRight.value = page?.safeAreaInsets.right ?? 0
safeareaInsetBottom.value = page?.safeAreaInsets.bottom ?? 0
})
onResize((options) => {
const page = instance?.proxy?.$page
safeareaInsetTop.value = page?.safeAreaInsets.top ?? 0
safeareaInsetLeft.value = page?.safeAreaInsets.left ?? 0
safeareaInsetRight.value = page?.safeAreaInsets.right ?? 0
safeareaInsetBottom.value = page?.safeAreaInsets.bottom ?? 0
})
</script>
<style>
.text-background {
background-color: red;
}
.padding-safe-area-inset {
flex: 1;
justify-content: space-between;
/* #ifdef APP */
padding-top: env(safe-area-inset-top, 0px);
padding-left: env(safe-area-inset-left, 0px);
padding-right: env(safe-area-inset-right, 0px);
padding-bottom: env(safe-area-inset-bottom, 0px);
/* #endif */
}
.content{
padding: 20px;
}
</style>