2012-09-04 6 views
21

応答可能なデザインをテストするために使用しているGoogle Nexus 7タブレットがあります。 Javascriptでは、screen.widthは、期待どおり(ネイティブ解像度)、800pxとして返します。Nexus 7 screen.widthは800を返しますが、メディアのクエリmax-width:720pxはまだ適用されています

画面の最大幅が> 720pxの場合、次のメディアクエリがタブレットでどのように選択されますか?

@media only screen and (max-width: 720px) and (orientation: portrait) { 
    .test{ background: red;} 
} 
+0

私は右に見えます - あなたは他の影響なしで、jsfiddleでこれをやろうとしましたか?それはまだ適用されますか? – zenkaty

+0

thosは 'http:// css-tricks.com/forums/discussion/17586/media-queries-same-width/p1'を手伝ってくれるかもしれません –

答えて

42

Androidは、Androidエコシステムのさまざまな画面の密度に対応するために、ターゲット密度スケーリングを行います。 Androidブラウザは、画面がMDPI画面であるかのように要素のサイズをエミュレートしようとすると、デフォルトで中程度の画面密度をターゲットにしています。

this website使用して、あなたはこのスケーリングの結果はdevice-width601 pxdevice-height。したがってネクサス7の880 pxであるということであることがわかります、それはあなたのmax-width: 720px宣言に収まると背景が赤く表示されます。

Screenshot

window.screen.width.height常に実際の画面サイズを返します。 ビューポートサイズスクリーンサイズは全く異なる2つのものであることを覚えておく必要があります。

この現象が発生しないようにするには、<meta name="viewport">タグにtarget-densitydpi=device-dpiを追加してください。これにより、Androidのターゲット密度スケーリングが無効になります。device-widthおよびdevice-heightは、デバイスのネイティブ画面解像度を報告します。

Androidのターゲット密度スケーリングの詳細については、Android Developers' Documentationをご覧ください。

+2

私はここの命名法では大変混乱しています...上記の 'response.js'サイトでは、' viewport width'、 'device width'、' document width'のJavaScript属性をリストアップしています。 CSSでは、 'device-width'メディアクエリは' viewport width'のJavaScriptに相当するものを見ていますか?なぜ彼らは同じものと呼ばれていないのですか? –

+1

'target-densitydpi'のサポートはWebkitから削除されました。http://trac.webkit.org/changeset/119527とその説明はこちら:https://petelepage.com/blog/2013/02/viewport-target- –

+1

@VolkerE:Androidの新しいバージョン(4.4以上)は、もはや** Webkit **を使用していません。 GoogleのWebkit fork:[Blink](http://www.chromium.org/blink)に切り替えました。 'target-densitydpi'は現在も将来的にもすべてのAndroidデバイスでサポートされています。古いバージョンのAndroid(4.3以下)では、Webkitの古いバージョンを使用していますが、 'target-densitydpi'がまだ利用可能です。 –

関連する問題