JS - iOS 上的 Safari - 如何获取视口比例 属性

JS - Safari on iOS - How to get viewport scale property

在 Chrome 上,我可以通过查看 window.visualViewport.scale 获得视口比例,它在 Safari 上可用,但是,window.visualViewport 似乎未在旧版本的 Safari iOS.

有什么解决方法吗?

根据 caniuse.com visualViewport.scale 应该可以在 2019 年 9 月 19 日发布的版本 13.0 的 iOS Safari 中使用。你更新了吗?

如果您确实需要为 iOS 支持旧版 Safari,并且如果您不需要在页面加载时立即测量比例,您可以尝试捕捉 touch events 和 guess/calculate 自己缩放。

如果真的要走投无路,可以试试"invent some bicycle"。例如(只是概念):在 <body> 内创建并测量 2 <div>。其中一个 width: 100vw; 和另一个 width: 100%; (这实际上是不需要的,因为块已经是父块宽度的 100%)。这里的诀窍在于不同的单位。 100vw 应始终为视口的 100%,而 100% 应拉伸至最大可用宽度。测量这 2 个块之间的差异,您可以计算比例。注意那些棘手的问题 margins/paddings,也许还要注意风景。

首先,您需要使用 clientWidthinnerWidth

获取视口宽度
var viewportWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);

然后,你需要得到实际的屏幕宽度

var screenWidth = window.screen.width

那么,视口比例就在你手上了

var viewportScale = screenWidth / viewportWidth