使用JavaScript/onorientationchange在iPhone上重置Safari的缩放/宽度/缩放

dwa*_*rbi 11 javascript iphone zoom viewport width

我正在使用body标签中的onorientationchange调用显示不同的内容,具体取决于用户如何握住他/她的手机.这很有效 - 我隐藏了一个div,同时让另一个可见.

纵向模式下的div在首次加载时看起来很棒.我使用它来获得正确的比例/缩放:

<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0;" />

即使纵向模式中的内容运行,宽度也是正确的,用户可以向下滚动.横向模式下的显示也很完美.但是,如果横向模式中的内容要求用户向下滚动,那么当用户返回纵向模式时,屏幕将"缩小"以便说出来.无论用户是否在横向模式下向下滚动,都会发生这种情况.

我尝试了许多不同的东西来试图获得正确的屏幕比例/缩放/宽度,但没有运气.有没有办法做到这一点?

提前致谢!

Jes*_*obs 18

上面接受的"答案"并不是真正的答案,因为不允许任何缩放与要求IE用户切换到另一个浏览器一样糟糕.可访问性很糟糕.您希望自己的设计不要做那些Apple在切换视图方向时认为理想的时髦缩放功能,但是您要让残疾用户黯然失色.非常不推荐.

尝试使用媒体查询或js钩子(screen.width等)在方向更改时自动调整您的设计.这就是为什么这些属性作为开发人员向我们展示的原因.


小智 8

这是我用来处理媒体查询缩放的内容:

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

最大规模是为我出售的东西.这意味着iPhone上从纵向到横向的过渡非常顺畅,根本没有变焦问题......

  • 完全禁用缩放并不是一个好主意..请参阅Scott Jehl的解决方案:https://github.com/scottjehl/iOS-Orientationchange-Fix/blob/master/ios-orientationchange-fix.js (2认同)