TECH

Vol.71

author

M.S.

srcsetで画像をレスポンシブやRetinaディスプレイに最適化

#WEB#programming#coding#Retina#resolution
Last update : 2025.3.4
Posted : 2017.7.14
Web上で、その状況に対応した画像に自由に切り替えることができるsrcset。 今回は、画面解像度やウィンドウサイズによって最適な画像に切り替える方法と、srcsetの主なプロパティなど実際のコーディングにすぐ使えるサンプルを解説とともにまとめています。
stuffstuff

srcsetでできること

  • ウィンドウサイズによって画像を切り替える
  • 画面解像度に合わせて画像を切り替える

主に上記2つは、レスポンシブへの対応や、Retinaディスプレイなど高解像度のデバイスに対応することができます。

2017年7月14日現在のブラウザの対応状況としては、Firefoxや、Safari、Chromeなどモダンブラウザでは問題なく動作しますがIE全バージョン、Microsoft Edgeでは未対応です。

srcsetの記述のみではIE、Microsoft Edgeで画像が表示されなくなってしまいます。
srcset未対応ブラウザにも対応するため従来通りのsrcでの画像指定も必ず行いましょう。

srcsetサンプルコードと解説

ウィンドウ(ディスプレイ)サイズで 画像を切り替える

画面解像度で画像を切り替える

ウィンドウサイズで画像を切り替える

ウィンドウサイズでの切り替えと、 画面解像度での切り替えを組み合わせる

backgroundでのRetinaディスプレイ対応

background-imageをcssのメディアクエリで表示を切り替える方法はよく知られていますが
同じくメディアクエリを使って、解像度で表示を切り替えることもできます。

@media only screen and (-webkit-min-device-pixel-ratio: 2){
body{background:url(large.jpg);}
}

画面の解像度を判定してbackgroundを切り替える
2以上の倍率で反映される

Chrome、Safariなどwebkit系のブラウザでは上記で問題なく動作します。
device-pixel-ratioというのはもともとRetinaディスプレイが開発された際、
Webkitが独自に開発したもののため、他のブラウザでは未対応です。
Firefoxなどのブラウザに対応させるには、以下のコードを併用します。
(min-resolution: 2dppx)

/* 例)*/
@media only screen and (-webkit-min-device-pixel-ratio: 2),(min-resolution: 2dppx){
body{background:url(large.jpg);}
}

まとめ

いかがでしたでしょうか。
機能としてはウィンドウサイズやRetinaディスプレイなどで画像を切り替えるという単純なコードですが、srcsetとともに使用する属性や、注意点を簡単にまとめました。
なによりsrcsetのよいところは必要な画像だけを読み込んでくれるところ。
ウィンドウサイズや画面解像度別で多くの画像を用意し、指定しておいても実際に読み込むのはそのウィンドウやディスプレイに必要な1枚だけというのが魅力的です。

また画像の切り替えをするということは、それだけの画像を用意する必要があるということ。
デバイス毎に最適な画像を表示できるようになりユーザーへの負荷が軽減されますが、どうしても複数枚画像を用意するという手間はかかってしまいます。
さらにその画像を全て指定するとなるとHTMLのコードもどんどん煩雑になるため、簡単に切り替えができるからとあまり振り分けを細かくしてしまうのも考えものです。
将来的には、HTMLやCSSのみでも1枚の画像でさまざまなウィンドウサイズや画面解像度に対応できるようになり、画像を用意する手間、コードでの処理や記述などが軽減されるといいなと思います。

PREV
Vol.70映画にみる色使いのこだわり
NEXT
Vol.7210 design tips That Evoke Summer

MORE FOR YOU