h5页面height设置100vh在safari浏览器显示问题

0 阅读1分钟

场景:

开发一个页面时候,将按钮固定在底部,中间部分超出滚动,中间部分高度设置为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
})

参考链接:blog.csdn.net/sunnyjingqi…