0

Modernizr を使用して、ブラウザーでビューポート ユニットがサポートされているかどうかを検出しようとしています。

これが私のテストです:

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

ビューポート ユニットが iOS7 でサポートされていないことは承知しているため、ここでフォールバックが必要になります。

横向きの iPad で iOS7 のページを読み込むと、アラートが実行されます。

ただし、ページを縦向きで読み込むと、アラートは表示されません。

条件が風景でのみ機能するのはなぜですか? これは Modernizr の既知のバグですか?

4

3 に答える 3

0

答えはありませんが、別の解決策を見つけました。

cssvmaxunit のテストを追加したところ、ポートレートとランドスケープの両方で条件が機能します。

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

ブラウザが をサポートしていない場合は、サポートvmaxしていない可能性が高いと思いvhます。

于 2014-12-18T22:02:00.773 に答える
0

iOS7 ではビューポート単位に問題がありました。特にビューポートの高さ。CanIUse.com には、このバグのある動作もリストされています。

iOS7 で部分的にサポートされているのは、「vh」ユニットの動作にバグがあるためです (回避策を参照してください)。

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

iOS8 はビューポート ユニットを完全にサポートしていますが、modernizr にはバグが報告されています。Modernizr によると、iOS8 Safari は vhunits をサポートしていますが、サポートしていません。しかし、現在これを修正するには問題があるようです。

于 2015-03-04T10:16:15.500 に答える
0

私自身も同じ問題を抱えていましたが、この記事を見つけて、良い解決策を見つけました。サポートのこの奇妙な中間点を検出し、クラスを html に配置する小さなスクリプトがあります。Modernizr とまったく同じように動作します

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

于 2016-10-11T12:38:38.563 に答える