6

Web サイトの各投稿には、ヘッダー画像があります。この画像の幅100vwと高さは300pxです。srcsetタグの属性imgまたは本格的な要素のいずれかを介して、この画像の複数のバージョンを配信したいと思いますpicture(現時点ではどちらかがわからないため、この質問です)。

これを行うには、srcset属性を使用するとかなり簡単です。

<img srcset="lg.jpg 1200w, md.jpg 992w, sm.jpg 768w, xs.jpg 320w" sizes="100vw" src="xs.jpg">

さまざまなデバイスのピクセル比を考慮したい場合に問題が発生します。まず、上記にリストされているすべてのイメージの2xとバージョンがあるとします。3xsrcset

幅の広いビューポート (iPhone 5 など)を備えた2x電話を持っているとしましょう。320pxブラウザをロードしたいと思いますxs_2x.jpg。同様に1x、ワイドスクリーン モニターを備えたデスクトップがあるとします。ブラウザをロードしたいと思いますlg.jpg

しかし今、私がより大きな携帯電話を持っているとしましょ3x414px。この場合、ブラウザをロードしたいと思いますsm_3x.jpg。ただし、(1536 ピクセル) の幅は(2304 ピクセル)の幅よりも電話の幅 (1242 ピクセル) に近いため、私のブラウザーはsm_2x.jpg代わりに読み込まれる可能性があります。これにより、デバイス上で画像の高さが低くなり、Web サイトの要件が満たされなくなります。sm_2x.jpgsm_3x.jpg300px

動的な幅、静的な高さ、DPR を意識したレスポンシブ イメージを実装するにはどうすればよいですか?

4

3 に答える 3

0

JPEG 画像解像度 (DPI) は画面では意味がないことを考慮する必要があります。ここで重要なのは、水平/垂直の合計ピクセル数です。

したがって、イメージの 1x、2x、および 3x バージョンは次のようになります (デバイスの幅に応じて!): デバイス - 画像サイズ表

したがって、1 台のモニターと 3 台の iPhone には同じ画像 (1920 x 300 ピクセル) が必要で、srcset のコードは次のようになります。img_name_1920px.jpg 1920w

<img srcset="img_name_1920px.jpg 1920w, img_name_1136px.jpg 1136w, img_name_768px.jpg 768w, img_name_320px.jpg 320w" sizes="100vw" src="img_name.jpg">

注: 画面幅が 320px の 1x (非 Retina) ディスプレイのデバイスを使用している場合は、幅 320px の画像を使用する必要があります。

ここでは、ピクセルの合計数のみが重要です。

于 2015-02-11T07:41:57.510 に答える