场景:
开发一个页面时候,将按钮固定在底部,中间部分超出滚动,中间部分高度设置为height:calc(100vh - 3rem)
,使用pc端浏览器、微信浏览器等能正常展示,在safari浏览器展示时会出现显示不全的问题
产生原因
移动端浏览器包含顶部地址栏,搜索栏,底部导航栏,它们会占据一定的高度,影响网页内容的可视区域。通常情况下,100vh
即视口高度会减去这些浏览器 UI 的高度,以确保网页内容不会被这些 UI 遮挡。
safari浏览器的高度没有减去地址栏,搜索栏,底部导航栏,导致高度计算有问题
解决办法
将100vh
替换成将高度设置为window.innerHeight
可以将高度正确设置为窗口的可见部分
中间部分代码如下:
<van-form :style="{'height':'calc('+state.innerHeight+'px - 3.2rem)','overflow':'auto'}">
</van-form>
const state = reactive({
innerHeight: window.innerHeight
})