想要在激活iOS键盘时调整浏览器视口大小

问题描述 投票:6回答:1

在iOS网络浏览器(Safari,Chrome等)中,当您单击输入字段并显示键盘时,它会使视口保持相同的大小,但会将其部分滑出视图。这使得创建类似app的网站变得非常困难,因为我正在编写一个聊天应用程序,当键盘显示我希望完全保持对话时,只需调整对话区域的大小以适应新的“已调整大小”的可视区域。

我已经尝试了所有的东西,例如让对话区域与left: 0; right: 0; top: 0; bottom: 0绝对定位,但iOS仍然保持视口大小相同并将其推向局部视线之外。

这可能吗?或者是系统级功能是否超出了CSS或JavaScript的控制范围?

javascript ios css safari
1个回答
0
投票

简单的答案是......软键盘与浏览器是分开的,不能被浏览器内部的任何东西控制。

Android和iOS都对软键盘的处理方式不同,因此在设备上编写内容非常困难。

iOS Safari不会更改浏览器窗口的大小。它实际上推动整个应用程序窗口将顶部隐藏在设备屏幕之外。因此,从理论上讲,position: fixed;页脚应该按照您期望的方式运行,同时标题被推到视线之外。 (位置fixed优于absolute作为其reference point is always the WINDOW。)

在实践中,它似乎取决于iOS的版本,以确定固定定位的实际工作方式。但是,从iOS版本12开始,您可以使用javascript来观察对window.innerHeight的更改,并在事情发生变化时添加新类。

Android上的Chrome似乎在物理上改变了浏览器窗口的高度,因此屏幕大小media-queries可能足以在这种情况下定位。

和往常一样,有很多设备/操作系统/屏幕组合,你应该尽可能多地测试,并意识到你可能永远不会解决所有这些问题。

© www.soinside.com 2019 - 2024. All rights reserved.