スマートフォンで解像度ごとに最適な画像サイズにするdevicePixelRatioの設定

2011/08/31

スマートフォンでは機種によって解像度がことなるのは周知のとおり。
100px×100pxの画像をiphone3で表示すると100px×100pxで表示されるが、iPhone4では解像度が2倍なので50px×50pxになってしまいます。

スマートフォンの解像度は横幅320pxを標準として480px、640px、720pxなど機種により様々な違いがあります。そこでCSSのmedia query を利用して最適なサイズに書き分けを行います。

/* devicePixelRatio=1(iPhone3~3GS、低解像度Android端末)とdevicePixelRatio未対応ブラウザ */

.className {
     width: 100px;
     height: 100px;
     background: url(image@1x.png); /* 等倍サイズの画像 */
}

/* devicePixelRatio=1.5 (Android端末に多い)*/
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (min-device-pixel-ratio: 1.5) {

     .className {
          background: url(image@1.5x.png); /* 1.5倍サイズの画像 */
          -webkit-background-size: 100px 100px; /* WebKit */
          background-size: 100px 100px; /* WebKit以外 */
     }
}

/* devicePixelRatio=2 (iPhone4~4S、高解像度Android端末)*/
@media only screen and (-webkit-min-device-pixel-ratio: 2),
only screen and (min-device-pixel-ratio: 2) {

     .className {
          background: url(image@2x.png); /* 2倍サイズの画像 */
          -webkit-background-size: 100px 100px; /* WebKit */
          background-size: 100px 100px; /* WebKit以外 */
     }
}

スマートフォンの各端末の解像度やdevicePixelRatioについては下記ページが参考になります。