在移动端避免使用100vh
在移动端避免使用100vh CSS中的Viewport单元听起来很棒。如果你想将一个元素设置成全屏高度,你可以设置高度: 100vh ,这样你就有了一个完美的全屏元素,它会随着视口的改变而改变大小!遗憾的是,事实并非如此。 100vh 在不同的浏览器的实现方式上也有一点微妙的变化,这使得它几乎毫无用处。最好避免 100vh ,而是依赖 javascript 来设置高度,以获得完整的视口体验。 核心问题是移动浏览器(Chrome和Safari)有一个“帮助”功a能,地址栏有时可见,有时隐藏,改变了视口的可见大小。这些浏览器没有将 100vh 的高度调整为视口高度变化时屏幕的可见部分,而是将 100vh 设置为隐藏地址栏的浏览器高度。结果是,当地址栏可见时,屏幕的底部部分将被切断,从而破坏了 100vh 的初衷。 如下所示: 当地址栏可见时,由于移动浏览器不正确地将 100vh 设置为屏幕高度而没有显示地址栏,因此屏幕底部被切断。在上图中,应该在屏幕底部的按钮被隐藏了。更糟糕的是,当用户第一次使用手机访问网站时,地址栏会显示在页面顶部,因此用户体验是很糟糕的。 一个好的解决方案: window.innerHeight 解决这个问题的一种方法是依赖javascript而不是css。当页面加载时,将高度设置为 window.innerHeight 将正确地将高度设置为窗口的可见部分