HTMLのタグのみで画像をメディアクエリーする

HTMLのタグのみで画像をメディアクエリーする

imgタグのみを使う場合

srcset属性とsizes属性を使う。width=”” height=””は書かない。

この方法ではsample.pngが一度読み込まれたらビューポートを変更しても他の画像は再読込みされない点に注意。

picture sourceタグを使って。

ビューポート毎にsourceタグに対してmedia属性・srcset属性・sizes属性を、最後にimgタグは通常通り書く。

この方法ではビューポートを変更したら該当の画像が再読込みされる。

※width=”” height=””指定はなくても意図した描画に切替わるが、Google PageSpeed Insightsでは怒られる。その対策としてwidth=”” height=””指定をするが、 それではsourceタグのsizesが効かずimgタグの指定に固定されてしまうので、別途CSSで補う。

補充用のCSSの例

Retina対応は?

sourceタグのsrcset属性に実画像サイズ(640w)とRetina指定(2x)を両方記述することはできない。

画像サイズの変更は必要ない場合なら(Retina対応含む)、 srcsetに「,」区切りで倍率ごとに記述する。画像サイズを変えないのでsourceタグのmediaやsizesは不要。

Retina対応も画像サイズも欲張りたいなら、sourceタグを分けて記述する。 前述の理由でスタイルシートも併用するのがベター。1x, 2xは書かないが、srcsetに指定する画像をRetina用のものにすることで実質的にRetina問題も解決できる。

コメントをする

メールアドレスがサイト上で公開されることはありません。

コメント

コメントはありません。