【发布时间】:2019-10-30 13:15:30
【问题描述】:
我在 iOS 12.3.1 Safari 中遇到了一些奇怪的事情。 这个问题至少可以追溯到 iOS 12.2, 但我想这个问题的存在时间要长得多。
在尝试将元素与视口的底轴对齐时会出现此问题,并且在纵向和横向模式下都是一个问题。
为了重现该问题,元素必须具有position 或fixed 或absolute,但无论您将元素定位为top 和transform 还是bottom .
人像模式
该问题仅在纵向模式下表现出来如果 Safari 显示其精简的 URL 栏, 替换了正常的 URL 和菜单栏,并且没有垂直溢出。
普通 URL 和菜单栏 // 压缩 URL 栏
值得注意的是,压缩菜单栏仅在出现垂直溢出并且浏览器向下滚动时或当浏览器的方向从纵向更改为横向然后再返回时才会显示(不管是否存在垂直溢出) )。
垂直溢出改变方向//没有溢出
我不确定这里到底发生了什么。
横向模式
横向模式的问题总是并且仅在正常导航栏显示在页面顶部时才会出现。由于向下滚动或方向从纵向更改为横向,导航栏只会在横向模式下隐藏。
垂直溢出
没有垂直溢出
有趣的是,横向模式下导航栏的高度明显偏移了视口,因此在显示导航栏时bottom: 0或top: 100%的位置被推到了视口之外。
纵向模式的糟糕“解决方法”
这是一个超级 hack-ish 的解决方法,也是一个糟糕的解决方法,但这是迄今为止唯一导致 position: fixed; bottom: 0; 在没有溢出的情况下切换方向后将元素实际定位在视口底部的方法。
<div style='height: 0'>
<!-- the quantity of <br> elements must create vertical overflow -->
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<!-- this does not work without the space character -->
</div>
但是,我只是注意到它会产生不可见的垂直溢出,因此至少在 Safari 和 Chrome 中会产生不必要的垂直滚动。我还担心它可能会在其他浏览器中的其他设备上导致我无法测试的其他问题。
由于这个错误,为了用户体验,一个网站有时不得不看起来像垃圾,这真是太糟糕了。
有人知道发生了什么吗?
有人知道任何解决方法吗?
有人知道实际的解决方案吗?
【问题讨论】:
-
检查stackoverflow.com/a/52936930/5623035是否有帮助并告诉我。
-
@MojtabaHosseini 这个问题看起来非常相似,但它最终是一个不同的问题,尽管它们很可能彼此相关。这些图像中的浏览器本身与我的手机在 12.3.1 中的设备上使用的 Safari 浏览器不同或看起来不同。
-
图像与嵌入在应用程序中的
SFSafariViewController相关,而不是 Safari 本身。我建议您在那里尝试解决方案,看看是否有帮助,但不能保证。 -
@MojtabaHosseini 我的问题与图像或
<img/>元素完全无关
标签: html css iphone mobile safari