短い答え
デバイスピクセル比率は、物理ピクセルと論理ピクセルの比率です。たとえば、iPhone 4とiPhone 4Sは、物理的な線形解像度が論理的な線形解像度の2倍であるため、デバイスピクセル比2を報告します。
- 物理的な解像度:960 x 640
- 論理解像度:480 x 320
式は次のとおりです。
どこ:
ある物理的な線形解像度は
そして:
論理線形解像度です
他のデバイスは、非整数を含む、さまざまなデバイスピクセル比を報告します。たとえば、Nokia Lumia 1020は1.6667を報告し、Samsumg Galaxy S4は3を報告し、Apple iPhone 6 Plusは2.46を報告します(出典:dpilove)。ただし、特定のデバイス用に設計するべきではないため、これは原則的に何も変更しません。
討論
CSSの「ピクセル」は、「画面上の1つの画像要素」として定義されるのではなく、視野角の非線形角度測定値として定義されます。これは、腕の長さで約1インチです。出典:CSS絶対長
これは、高解像度の画像リソースを準備したり、さまざまな画像をさまざまなデバイスピクセル比率で慎重に適用したりするなど、Webデザインに関して多くの意味を持ちます。ローエンドのデバイスに非常に高解像度の画像を強制的にダウンロードさせるのではなく、ローカルで縮小するだけです。また、ハイエンドのデバイスがぼやけたユーザーエクスペリエンスのために低解像度の画像をアップスケールすることも望まないでしょう。
多くの異なるデバイスピクセル比に対応するためにビットマップイメージに悩まされている場合は、CSSメディアクエリを使用して、デバイスの異なるグループに異なるリソースのセットを提供する必要があります。これをのような素敵なトリックと組み合わせるbackground-size: cover
か、明示的background-size
にパーセント値に設定します。
例
#element { background-image: url('lores.png'); }
@media only screen and (min-device-pixel-ratio: 2) {
#element { background-image: url('hires.png'); }
}
@media only screen and (min-device-pixel-ratio: 3) {
#element { background-image: url('superhires.png'); }
}
このように、各デバイスタイプは正しいイメージリソースのみをロードします。px
CSS のユニットは常に論理ピクセルで動作することにも注意してください。
ベクターグラフィックスの事例
表示されるデバイスの種類が増えるにつれ、それらすべてに適切なビットマップリソースを提供するのは難しくなります。CSSでは現在、メディアクエリが唯一の方法であり、HTML5では、picture要素を使用してさまざまなメディアクエリにさまざまなソースを使用できますが、ほとんどのWeb開発者はまだしばらくの間IE11をサポートする必要があるため、サポートはまだ100%ではありません(ソース:caniuse)。
写真ではなく、アイコン、ラインアート、デザイン要素の鮮明な画像が必要な場合は、すべての解像度に合わせて美しく拡大縮小できるSVGについて考える必要があります。
width=device-width
、フルスクリーンに拡大されますか?