27

在 Safari iOS15 中,默认情况下,地址栏固定在视口底部。正如iOS 15 Safari 浮动地址栏所解释的那样,您可以使用padding-bottom: env(safe-area-inset-bottom)它来确保内容显示在其上方。

但是,如果键盘可见,则环境变量不起作用,因为浮动地址栏显示在键盘上方,并且它清除了视口的底部。这可能会导致某些内容隐藏在其下方。

这是该问题的简单演示:https ://pmusaaj.github.io/ios15-bottom-bar2.html

在 iOS 14 及更低版本或在 Safari 设置为在顶部显示地址栏的 iOS15 上,当文本区域处于焦点时,您可以看到提交按钮。在默认的 iOS15 上,你不能,因为设备返回的视口高度不包括浮动地址栏。

更新:https ://bugs.webkit.org/show_bug.cgi?id=229876 上的 WebKit 错误报告

4

3 回答 3

7

我能找到的最接近的解决方案是使用 navigator.userAgent 检查是否存在 iOS 15:

console.log(navigator.userAgent.indexOf("iPhone OS 15") != -1)

但是,用户仍然可以将设置中的标签栏位置更改回顶部。

下面的截图是在 Xcode iPhone 模拟器中测试它并使用 safari 中的开发工具检查浏览器

检查此屏幕截图中的输出

于 2021-10-06T21:25:42.467 回答
4

同样的问题,visualViewport 报告高度为 534px,但红色区域仍然在 url chrome 后面,而它应该在 490px 左右

越野车行为 越野车行为

正确的行为 正确的行为

于 2021-10-05T10:08:21.473 回答
3

这似乎已在 iOS 15 developer beta 3 中得到修复。

于 2021-10-09T14:07:26.810 回答