
WEBページ内に画像を表示する際、画像表示用の領域のサイズと、実際に表示する画像のサイズとが一致しないケースというのがままあります。そのようなケースに使える、「画像をその表示領域いっぱいにフィットさせるjQueryスクリプト」を作成しました。
使い方
前述のスクリプトをjquery.imgfit.js
というファイル名で保存します。
WEBページ内にscript
要素を使って読み込みます。この際、jQueryのファイルより後ろで読み込むようにしてください。
・・・ <script src="/js/jquery.1.7.0.js"></script> <script src="/js/jquery.imgfit.js"></script> </body>
処理を適用したいimg
要素に所定のクラスを記述してください。
クラス名/ jQueryイベント名 |
img-fit-cover |
img-fit-contain |
---|---|---|
実行後の表示 | 表示領域に余白ができないようにフィット | 画像全体が表示領域におさまるようにフィット |
表示領域と 画像の画角が 異なる場合の処理 |
画像の上下または左右が一部省略される | 領域の上下または左右に余白が生じる |
サンプル
留意点
- やってることは、
img
要素の画像を表示領域の背景画像として設定するという処理です。 jQuery(elem).on()
を使っているので、jQuery1.7以上が必要です。background-size: cover;
やbackground-size: contain;
を使っているので、IE9以降のブラウザが必要です。- 処理実行後、本来の画像要素(
img
要素)は非表示化(jQuery(elem).hide()
)します。このため、- 表示領域に
width
とheight
を設定してください。 img
要素に設定されたCSSやJSのイベントハンドラなどは無効となります。
- 表示領域に
- ページのロード後にAjaxなどで動的に生成された要素に対して処理を実行する場合は、生成したimg要素に対して
img-fit-cover
イベントまたはimg-fit-contain
イベントをtriggerしてください。var $img = $("<img>"), $fig = $("<figure></figure>"); $fig.append($img); $img.attr("src",src).trigger("img-fit-cover");