実際の物理的寸法や実際のDPIを実際に取得することはできません。また、取得できたとしても、それらを使用して何もすることはできません。
これはかなり長くて複雑な話なので、許してください。
Webおよびすべてのブラウザーは、1pxをCSSピクセルと呼ばれる単位として定義します。CSSピクセルは実際のピクセルではなく、デバイスの視野角に基づいて1/96インチと見なされる単位です。これは、参照ピクセルとして指定されます。
参照ピクセルは、ピクセル密度が96dpiで、アームの長さのリーダーからの距離を持つデバイス上の1ピクセルの視角です。したがって、公称アームの長さが28インチの場合、視角は約0.0213度になります。したがって、腕の長さで読み取る場合、1pxは約0.26 mm(1/96インチ)に相当します。
0.26mmのスペースでは、実際のデバイスピクセルが非常に多くなる可能性があります。
ブラウザは主にレガシーの理由でこれを行います-ほとんどのモニターはウェブが生まれたとき96dpiでした-しかし一貫性のために、「昔」では、800x600の15インチ画面の22pxボタンは上の22pxボタンの2倍のサイズでした1600x1200の15インチモニター。この場合、画面のDPIは実際には2倍です(水平方向の解像度は2倍ですが、同じ物理空間内にあります)。これはウェブとアプリにとって悪い状況であるため、ほとんどのオペレーティングシステムは、ピクセル値をデバイスに依存しないユニット(AndroidのDIPS、iOSのPT 、ウェブのCSSピクセル)に抽象化する多くの方法を考案しました。
iPhone Safariブラウザは(私の知る限り)ビューポートの概念を最初に導入したものです。これは、フルデスクトップスタイルのアプリケーションを小さな画面でレンダリングできるようにするために作成されました。ビューポートの幅は960pxに定義されています。これは基本的にページを3倍にズームアウトしたため(iphoneは元々320pxでした)、1CSSピクセルは物理ピクセルの1/3です。ビューポートを定義すると、このデバイスを163dpiで1CSSピクセル= 1実ピクセルに一致させることができます。
幅が「デバイス幅」のビューポートを使用することで、デバイスごとにビューポートの幅を最適なCSSピクセルサイズに設定する必要がなくなり、ブラウザが自動的に設定します。
ダブルDPIデバイスの導入により、携帯電話メーカーはモバイルページが50%小さく表示されることを望まなかったため、devicePixelRatio(私が信じるモバイルWebキットで最初)と呼ばれる概念を導入しました。これにより、1つのCSSピクセルを約1 /に保つことができます。 96分の1インチですが、画像などのアセットは2倍のサイズが必要になる場合があることを理解してください。iPhoneシリーズを見ると、すべてのデバイスで、CSSピクセル単位の画面の幅は320ピクセルであると言われていますが、これは正しくないことがわかっています。
したがって、CSSスペースでボタンを22ピクセルにした場合、物理画面での表現は22 *デバイスピクセル比になります。実際、私はこれを言いますが、デバイスのピクセル比も正確ではないため、正確にはこれではありません。電話メーカーは、2.1329857289918ではなく2.0、3.0などの適切な数値に設定しています。
要約すると、CSSピクセルはデバイスに依存しないため、画面の物理的なサイズや表示密度などについて心配する必要はありません。
話の教訓は次のとおりです。画面の物理的なピクセルサイズを理解することを心配しないでください。あなたはそれを必要としません。50pxは、すべてのモバイルデバイスでほぼ同じように見えるはずですが、少し異なる場合がありますが、CSS Pixelは、一貫性のあるドキュメントとUIを構築するためのデバイスに依存しない方法です。
リソース: