为什么Modernizr.cssvhunit在使用纵向方向时无法在iOS7中工作?

时间:2014-12-18 21:20:23

标签: javascript ios modernizr viewport-units

我正在尝试使用Modernizr来检测浏览器是否支持视口单元。

这是我的测试:

if(!Modernizr.cssvhunit) {
    alert('viewport units are not supported');
}

我知道iOS7不支持视口单元,所以这就是我需要回退的地方。

当我在横向iPad上的iOS7中加载页面时,会执行警报。

但是,如果我以纵向方式加载页面,我就不会看到警报。

为什么这种情况只适用于景观?这是Modernizr的已知错误吗?

3 个答案:

答案 0 :(得分:0)

我没有答案,但我确实想出了另一种解决方案。

我为cssvmaxunit添加了一个测试,条件在纵向和横向都有效。

// if viewport units aren't supported
if(!Modernizr.cssvhunit || !Modernizr.cssvmaxunit) {
    alert('viewport units are not supported');
}

我认为如果浏览器不支持vmax,那么它可能不支持vh

答案 1 :(得分:0)

iOS7在视口单元方面存在问题。特别是视口高度。 CanIUse.com还列出了这种有害行为:

  iOS7中的部分支持是由于" vh"的错误行为造成的。单位(see workaround)。

http://caniuse.com/#search=viewport%20units

iOS8支持视口单元完全正常,但它有一个filed bug in modernizr。 Modernizr表示iOS8 Safari不支持vhunits,即使它确实如此。但现在似乎有问题要解决这个问题。

答案 2 :(得分:0)

我自己也有同样的问题,设法找到了一个有良好解决方案的this article。这是一个小脚本,可以检测到这个奇怪的支持中间地带并在html上放置一个类。与Modernizr完全相同

https://github.com/vasilisvg/crazy-vh-test/