【问题标题】:How to handle Android keyboard overlaying fixed elements?如何处理覆盖固定元素的Android键盘?
【发布时间】:2020-09-10 23:45:33
【问题描述】:

我的网站上有私人消息功能。消息窗口是一个固定元素:

position: fixed;
bottom: 0;

在 iOS 上,当打开位于消息窗口最底部的输入时,键盘只会将整个网站推到顶部,这样您仍然可以看到您正在输入的内容。

但是,在 Android 上,键盘只是与所有内容重叠,因此您不再看到输入元素:

我该怎么做才能让它同时在 iOS 和 Android 上运行?

【问题讨论】:

标签: javascript android css ios google-chrome


【解决方案1】:

一种方法是存储初始窗口(视口)高度并在窗口调整大小事件中进行比较。假设在 99% 的情况下智能手机上的窗口大小不会改变,您可以假设正在显示键盘。但是,对我来说,这有点 hacky

【讨论】:

  • 这并没有真正的帮助。我已经可以捕捉到这个事件,我的问题是我不知道如何使用 css 正确显示它。据我所知,例如没有办法检测键盘的高度。
  • 正如我所说 - 存储原始高度值。它是设备屏幕的总高度。然后,一旦您看到窗口大小的变化 - 总高度减去新高度等于键盘高度
  • 好的,谢谢。不过有一个大问题。一些浏览器实际上会自己推送内容(如预期的那样)。有些没有。我将如何检测到这一点?
【解决方案2】:

获得视口的实际大小后,只需更新元素的bottom:x 值即可。

如果您询问是否可以仅使用 css 检测,那么您可能需要查看 css 媒体查询

CSS media queries: max-width OR max-height

【讨论】:

  • 好吧,你的意思是我应该在移动设备上监听视口高度的变化,获取更新后的视口大小并相应地设置底部属性,对吧?这听起来确实是个好主意。
  • 不过有一个大问题。一些浏览器实际上会自己推送内容(如预期的那样)。有些没有。我将如何检测到这一点?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多