CSS3常见问题:100vh在移动浏览器中不是固定的,恒定的

站长博客:https://www.pipipi.net/

前言
加载页面时所有浏览器都有一个顶级菜单(例如显示地址栏),当您开始滚动页面时,该菜单会向上滑动。这个时候该菜单会变小,由于100vh仅在视口的可见部分计算,因此会导致所有布局都重新绘制并重新调整,对用户体验的糟糕跳跃效果。

参见图如下,明显可见第二个菜单栏变小了。
图1
图2

正文
不幸的是这个问题是一直有意存在的.....
这是一个众所周知的问题(至少在safari mobile中是存在的),这是有意的,因为它可以防止其他问题。 参见Benjamin Poulain回复webkit bug:

这完全是故意的。我们需要花费大量的工作才能达到这个效果。 CSS3常见问题:100vh在移动浏览器中不是固定的,恒定的-创客青年博客

基本问题是:滚动时可见区域会动态变化。如果我们相应地更新CSS视口高度,我们需要在滚动期间更新布局。不仅如此看起来像狗屎,但在大多数页面中以60
FPS执行此操作几乎是不可能的(60 FPS是iOS上的基线帧速率)。

动态更新高度不起作用,我们有几个选择:在iOS上删除视口单元,匹配iOS 8之前的文档大小,使用小视图大小,使用大视图大小。

根据我们的数据,使用更大的视图大小是最好的折衷方案。大多数使用视口单元的网站在大多数时候看起来很棒。
可以看考Nicolas Hoizey大神对这个问题的研究: https://nicolas-hoizey.com/20...

不打算修复

目前,除了避免在移动设备上使用视口高度之外,没有更好的解决办法。移动Chrome似乎也想要适应这一点,尽管它不确定它们是否会贯彻执行。(参考链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值