在iOS网络浏览器(Safari,Chrome等)中,当您单击输入字段并显示键盘时,它会使视口保持相同的大小,但会将其部分滑出视图。这使得创建类似app的网站变得非常困难,因为我正在编写一个聊天应用程序,当键盘显示我希望完全保持对话时,只需调整对话区域的大小以适应新的“已调整大小”的可视区域。
我已经尝试了所有的东西,例如让对话区域与left: 0; right: 0; top: 0; bottom: 0
绝对定位,但iOS仍然保持视口大小相同并将其推向局部视线之外。
这可能吗?或者是系统级功能是否超出了CSS或JavaScript的控制范围?
简单的答案是......软键盘与浏览器是分开的,不能被浏览器内部的任何东西控制。
Android和iOS都对软键盘的处理方式不同,因此在设备上编写内容非常困难。
iOS Safari不会更改浏览器窗口的大小。它实际上推动整个应用程序窗口将顶部隐藏在设备屏幕之外。因此,从理论上讲,position: fixed;
页脚应该按照您期望的方式运行,同时标题被推到视线之外。 (位置fixed
优于absolute
作为其reference point is always the WINDOW。)
在实践中,它似乎取决于iOS的版本,以确定固定定位的实际工作方式。但是,从iOS版本12开始,您可以使用javascript来观察对window.innerHeight
的更改,并在事情发生变化时添加新类。
Android上的Chrome似乎在物理上改变了浏览器窗口的高度,因此屏幕大小media-queries
可能足以在这种情况下定位。
和往常一样,有很多设备/操作系统/屏幕组合,你应该尽可能多地测试,并意识到你可能永远不会解决所有这些问题。