レチナ対応機種が無かったのでこれまで避けてきたのですが、今更ながら我が家にiPhone4sがきたので、前々から構想していたレチナ対応をプラグインにしてみました。

追記:
iOS6で全般うまく動いて無いみたいなので調査中です(´・ω・`)

追記:同日15時53分
諸々修正いたしました。TLの皆様、ご助力ありがとうございました!!

追記:2012年9月27日10時頃
ご要望をいただいたので、本エントリーの追記、サンプルの改修をしました。

使い方

HTML+JavaScript

<!--
画像の幅:data-img-width
画像の高さ:data-img-height
画像のALT:data-img-alt
画像のパス:data-img-path ←追加
-->
<a href="img.jpg" class="img-retina" data-img-width="160px" data-img-height="120px" data-img-alt="画像のALT">JSオフ用のテキストリンクをALTにしておくとベター</a>

<a href="img_2x.jpg" class="img-retina-wrapper" data-img-path="img.jpg" data-img-width="160px" data-img-height="120px" data-img-alt="画像のALT">JSオフ用のテキストリンクをALTにしておくとベター</a>

<div class="img-retina" data-img-path="img.jpg" data-img-width="160px" data-img-height="120px" data-img-alt="画像のALT">リンクにはならない</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="jquery.imgRetina.min.js"></script>
<script>
$(function(){
	/* $.imgRetina(options); */
	/* <a>以外もチェック */
	$('.img-retina').imgRetina();
	/* ラッパーを残す設定 */
	$('.img-retina-wrapper').imgRetina({ wrapper : true });
});
</script>

options (object) で設定できる項目

  • suffix:レチナ画像用のファイル名接尾詞 デフォルトは’_2x’
  • wrapper = アンカーを残す場合 true デフォルトは false

解説

<a>要素に設定したデータを元に、プラグインで画像に置換しています。
幅と高さはスタイルに入れる値なので単位も入れてください。

  • レチナ対応機種ではレチナ画像のみを読み込みます
  • レチナ非対応機種では通常画像のみを読み込みます
  • JSオフの時は通常画像へのリンクになります
  • 前提条件として画像には拡張子が必要です
  • data-img-path属性はhref属性より優先されます ←追加
  • data-img-path属性にはsuffix無しの画像を設定します ←追加

背景はCSS側で対応すればいいかなぁ、と思っているので未対応です。


ツッコミ等あれば、ぜひぜひコメントをしていってください。

よろしくお願いします。