JavaScriptを使用して、ビューポートの幅ではなく、ユーザーのデバイスの幅を取得する方法はありますか?
CSSメディアクエリはこれを提供します。
@media screen and (max-width:640px) {
/* ... */
}
そして
@media screen and (max-device-width:960px) {
/* ... */
}
これは、スマートフォンを横向きでターゲットにしている場合に役立ちます。たとえば、iOSでは、宣言は max-width:640px
iPhone 4でも横向きと縦向きの両方をターゲットにします。Androidの場合、私が知る限り、これは当てはまりません。したがって、このインスタンスでdevice-widthを使用すると、両方の向きを正しくターゲットにできます。デスクトップデバイスを対象としない。
ただし、デバイスの幅に基づいてjavascriptバインディングを呼び出す場合、ビューポートの幅のテストに制限されているようです。これは、次のような追加のテストを意味します。
if ($(window).width() <= 960 && $(window).height <= 640) { /* ... */ }
デバイスの幅がcssで利用可能であるというヒントを考えると、これは私にはエレガントに思えません。
Modernizr
これを「クリーンで一般的な方法」で行うのに役立ちます:stackoverflow.com/questions/25935686/…。最初のコメントについて:「Modernizr vs <otherLib>メディアクエリ」をググって、ユースケースに最適なものを見つけることができます