iPhoneなどApple製品に使われているRetinaディスプレイ。
従来のディスプレイよりも高解像度(1ピクセルの幅が78ミクロン)であることから
Retinaディスプレイで画像を綺麗に表示するには、表示する倍のサイズで作成する必要があったり
特別な対処をする必要がでてきたりします。
そんなRetinaディスプレイに対して、jQuery(JavaScript)を使って判別し
個別に処理させる方法があったので紹介してみます。
※webkitブラウザのみの対応です。
jQueryでRetinaディスプレイを判別して処理を変える方法
Retinaディスプレイかどうかを判別するプロパティは
デバイス上で画像の1pxの単位を何pxとしてレンダリングしているかを見てくれる
————————————–
window.devicePixelRatio
————————————–
によって判別します。
Retinaディスプレイはここで取得する値が「2」になります。
これを使って実際に表示しているデバイスが
Retinaディスプレイかどうか判別するサンプルは以下のようになります。
※表示しているディスプレイがRetinaか、Retinaではないか、下に表示されます。
(webkitブラウザのみの対応なのでIEやFirefoxでは何も表示されません)
これを実行させるスクリプトは以下のようになっています。
(HTMLにはコンテンツ要素id「#container」のみ配置)
◆SCRIPT
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
$(function(){
var retinaSwitch = window.devicePixelRatio;
if(retinaSwitch == 1) {
$('#container').html('Retinaディスプレイではありません');
} else if(retinaSwitch == 2) {
$('#container').html('Retinaディスプレイです');
}
});
</script>
Retinaディスプレイの場合には、
コンテンツ要素id「#container」に「Retinaディスプレイです」のテキストを表示し、
そうでない場合には「Retinaディスプレイではありません」を表示しています。
この様に「window.devicePixelRatio」で取得する値から
Retinaディスプレイを判別して処理を変えることができます。
jQueryを使わずにJavaScriptでシンプルに処理するには
以下のような方法でも可能です。
◆SCRIPT
<script>
if (window.devicePixelRatio == 2){
~Retinaディスプレイの場合の指定~
}
</script>
これらのディスプレイ判別はCSSでの
「-webkit-device-pixel-ratio」でも処理することができ、
MediaQueriesを使って以下のように指定することができます。
◆CSS
@media only screen and (max-device-width: 480px) and (-webkit-device-pixel-ratio:1) {
~Retinaディスプレイ以外の場合の指定~
}
@media only screen and (max-device-width: 480px) and (-webkit-device-pixel-ratio:2) {
~Retinaディスプレイの場合の指定~
}
「window.devicePixelRatio」での取得する値について
Androidではどうなっているか、[to-R]さんの記事でまとめているものもあったので
これらもとても参考になりそうです。
【参考記事】Android端末のdevicePixelRatio[to-R]
ディスプレイによって個別に判別する処理が必要な際に是非。。。
