我正在尝试使用 Modernizr 来检测浏览器是否支持视口单元。
这是我的测试:
if(!Modernizr.cssvhunit) {
alert('viewport units are not supported');
}
我知道 iOS7 不支持视口单元,所以这是我需要后备的地方。
当我在 iPad 上横向加载 iOS7 中的页面时,会执行警报。
但是,如果我以纵向加载页面,我看不到警报。
为什么这种情况只适用于景观?这是 Modernizr 的已知错误吗?
我正在尝试使用 Modernizr 来检测浏览器是否支持视口单元。
这是我的测试:
if(!Modernizr.cssvhunit) {
alert('viewport units are not supported');
}
我知道 iOS7 不支持视口单元,所以这是我需要后备的地方。
当我在 iPad 上横向加载 iOS7 中的页面时,会执行警报。
但是,如果我以纵向加载页面,我看不到警报。
为什么这种情况只适用于景观?这是 Modernizr 的已知错误吗?
iOS7 had problems with viewport units. Especially with viewport height. CanIUse.com also lists this buggy behaviour:
partial support in iOS7 is due to buggy behavior of the "vh" unit (see workaround).
http://caniuse.com/#search=viewport%20units
iOS8 supports viewport units perfectly fine but there is a filed bug in modernizr about it. Modernizr says iOS8 Safari does not support vhunits even though it does. But it seems there are problems to fix this right now.
我没有答案,但我确实找到了替代解决方案。
我为 cssvmaxunit 添加了一个测试,并且该条件适用于纵向和横向。
// if viewport units aren't supported
if(!Modernizr.cssvhunit || !Modernizr.cssvmaxunit) {
alert('viewport units are not supported');
}
我想如果浏览器不支持vmax
,那么它可能不支持vh
。
我自己也有同样的问题,设法找到了这篇有很好解决方案的文章。有一个小脚本可以检测到这种奇怪的中间支持并在 html 上放置一个类。与 Modernizr 完全相同