ios - 在 iOS 上的网页上使用键盘打开方向更改的缩放问题

标签 ios iphone ipad mobile-safari viewport

为了解决自动缩放问题以在 iOS 设备上呈现我的网页,我添加了视口(viewport)元标记,

<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-  scale=1,user-scalable=no"> 

并且我通过 iPhone 和 iPad 的媒体查询添加了特定于设备的样式,这解决了在纵向/横向方向之间切换时的缩放问题。 现在的问题是,当我将焦点转移到输入字段(抬起键盘)并在键盘打开时切换到横向(自动缩放发生得很好)以及当我将方向切换回纵向模式(键盘仍然打开)时,用户界面会变形,即一些额外的长度被添加到视口(viewport)宽度中,这要么显示为黑色区域,要么是同一视口(viewport)的一部分再次重复。如果我再次放下键盘并切换方向,添加的空间将被删除,用户界面将再次恢复正常。只有在键盘打开时才会发生这种情况。我使用移动浏览器作为我的浏览器。

最佳答案

多年来,我一直在使用 Mobile Safari,并且我学到了一件事——当输入具有焦点时,当涉及到方向更改时,它会出现很多错误。

说到这里,这里有一个小脚本可能会帮助您。

window.addEventListener('orientationchange', function(){
    document.body.style.paddingRight = '1px';
    setTimeout(function(){
        document.body.style.paddingRight = '';
    }, 50);
}, true);

这基本上会强制浏览器重新排列/重新计算布局,这应该有望解决您所看到的情况。

摆弄一个易于重现的错误:https://jsfiddle.net/LYn54

修改修复:https://jsfiddle.net/gQR4m

希望这对您有所帮助!

关于ios - 在 iOS 上的网页上使用键盘打开方向更改的缩放问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23633396/

相关文章:

ios - 具有核心数据和 Restkit 的多 View Controller

ios - Ionic 3 - 你的应用程序包含非公开的 api 使用

iphone - NSScrollView 滚动时报错 "-[CALayer isEqual:]: message sent to deallocated instance"

增强现实中的 iPhone 标记检测

ios - 提交 iMessage 贴纸包需要 iPad 截图?

iphone - 在 iOS 中,如何将图像嵌入到文本中(在 UITextView 中)?

iphone - Objective-C 中是否可以随机生成 tmx( map )文件?

html - 有没有一种安全的方法来使用 max-height CSS 媒体查询

ios - 替代 [UIScreen mainScreen].nativeScale 是否支持 iOS 7?

iphone - 根据特定时区计算日期