【发布时间】:2021-09-06 16:48:34
【问题描述】:
在 iOS 15 中,Safari 更改了地址栏的行为。它浮动在页面底部附近的某处。
这会极大地影响页面的设计和用户体验。
是否有检测地址栏的指示器,知道它何时存在并知道它的位置?
【问题讨论】:
-
更新:这是一个移动的目标,Apple 改变了行为。地址栏不再浮动
在 iOS 15 中,Safari 更改了地址栏的行为。它浮动在页面底部附近的某处。
这会极大地影响页面的设计和用户体验。
是否有检测地址栏的指示器,知道它何时存在并知道它的位置?
【问题讨论】:
使用环境变量safe-area-inset-bottom 在底部填充您的网页,如下所示:
body {
padding-bottom: env(safe-area-inset-bottom);
}
Jen Simmons 的本次会议讨论了如何处理 Safari 的新地址栏:https://developer.apple.com/videos/play/wwdc2021/10029/(从 16:44 开始)
【讨论】:
safe-area-inset-bottom 的讨论现在已经过时了。值得关注概念,但不要尝试按照描述的方式实现。
浮动标签栏被认为超出了安全区域的下边缘。您可以使用 env(safe-area-inset-bottom) 在 CSS 中从视口底部获取安全区域的插图。
有关在 WebKit 中支持安全区域的更多信息:https://webkit.org/blog/7929/designing-websites-for-iphone-x
【讨论】:
这种行为发生了很大变化。我建议在您的页面中添加这样的 DIV 来玩:
<div style="background: red; color: white; padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)">Hello!</div>
这将在一个紧的红色框中为您提供 Hello! 字样,并带有
应用了四个安全边距。您将在此 div 所在页面的任何位置看到这些边距 - 您无需将其设为页脚或页眉。这是可视化正在发生的事情的一个很好的帮助。
截至 Safari 15 当前测试版有:
env(safe-area-inset-bottom) 设置任何值以避免干扰底部地址栏。env(safe-area-inset-bottom)设置是为了避开主屏幕指示栏。因此,要使红色框实际上看起来有任何填充,您必须:
【讨论】: