css 移动的键盘打开/关闭时延迟

11dmarpk  于 2022-12-24  发布在  其他
关注(0)|答案(2)|浏览(140)

我有一个使用原生HTML,CSS和Javascript制作的移动的网站。
每当移动的键盘打开/关闭时,当我点击一个<input>,该网站会自动向上/向下移动所有元素,在一个非常滞后的方式。
请看我在下面制作的GIF:

为什么会导致这个如此滞后?

  • 我的猜测是,每当网站改变视口,它必须转移大量的元素,导致滞后。

有没有人能建议一下有没有办法减少延迟?有没有办法检测到视口的变化,冻结元素,然后将它们重置到原始位置,而不自动向下渐变?

p1tboqfb

p1tboqfb1#

@SunAwtCanvas,这是我的解决方案,使用@capacitor/keyboard来启用以下事件侦听器。首先,您可能希望侦听窗口事件:

window.addEventListener('keyboardWillShow', () => {
  console.log("Keyboard will Show");
});
window.addEventListener('keyboardDidShow', () => {
  console.log("Keyboard is Shown");
});

基于这些条件,为了手动控制视口滚动到屏幕底部,您需要添加element.scrollIntoView()方法,并为其提供“false”参数,如下所示:element.scrollIntoView(false);
文件:

  1. element.scrollIntoView()
  2. window.addEventListener('keyboardWillShow')
jogvjijk

jogvjijk2#

可以通过检测视口更改并手动应用布局更改来减少延迟并优化体验,而不是依赖于自动切换。为此,您可以使用JavaScript事件侦听器来侦听窗口大小调整、方向更改、或键盘显示/隐藏以检测视口中的变化并相应地更新布局。你也可以利用CSS媒体查询来根据不同的屏幕大小指定不同的布局。这样你的代码会更灵活,并针对不同类型的设备进行优化。

相关问题