画面サイズをインチ単位で直接取得する方法はありませんが、画面密度を使用してデバイス サイズを見つける回避策があります。完全ではありませんが、有効数字 5 桁までの正確なサイズを知る必要はありません。また、通常は単純にピクセル値 IMO を使用することをお勧めします。
HTML
テスト div を作成し、表示されるピクセル数を確認してピクセル密度を取得し、それを計算に使用します。これは、ブラウザー/OS が適切に構成されていることを前提として機能するはずです (この質問では機能しませんでしたが、私のコンピューターでは 0.5 インチ以内でした)。
編集: これは 100% 間違っています。CSS のインチ/cm の測定値は、実際の物理的な測定値に基づいていません。これらは正確な変換 (1 インチ = 96 ピクセル、1 cm = 37.8 ピクセル) に基づいています。謝罪いたします。
CSS
物理的な画面サイズを検出する最良の方法は、CSS メディア クエリを使用することです。min-resolution
およびmax-resolution
クエリを使用して、 または のいずれかで解決策を取得dpi
できdpcm
ます。
@media (min-resolution: 300dpi){
// styles
}
min-device-width
およびクエリと組み合わせると、次のmax-device-width
ようになります。
@media (resolution: 326dpi) and (device-width: 640) and (device-height: 960){
// iPhone
}
問題は、7 インチのデバイスをターゲットにしたい場合、多くの解像度とそれに対応する幅を組み合わせる必要があり、複雑になる可能性があることです。
詳細については:
Javascript
window.devicePixelRatio
画面密度を決定するために使用できます。Android の WebView リファレンスから:
window.devicePixelRatio
DOM プロパティ。このプロパティの値は、現在のデバイスに使用されるデフォルトの倍率を指定します。たとえば、値window.devicePixelRatio
が「1.0」の場合、デバイスは中密度 (mdpi) デバイスと見なされ、デフォルトのスケーリングは Web ページに適用されません。値が「1.5」の場合、デバイスは高密度デバイス (hdpi) と見なされ、ページ コンテンツは 1.5 倍にスケーリングされます。値が「0.75」の場合、デバイスは低密度デバイス (ldpi) と見なされ、コンテンツは 0.75x にスケーリングされます。
次に、これを使用して、これを合計ピクセル数で割って物理サイズを計算します。これはwindow.screen.width
andで計算できます (これらは使用可能な高さのみを検出するため、orwindow.screen.height
は使用しないでください)。window.screen.availHeight
window.screen.availWidth
詳細については: