編集して追加: よ、どのチュートリアルからそのマークアップを取得しましたか? これは、誰も実装したことがなく、悪い考えだった古い srcset 構文を使用しようとしているように見えることに気付きました。どこで入手したかを指摘していただければ、そのチュートリアルを更新して、より多くの人が同じ間違いを犯すのを防ぐことができます.
まず、w と x を混在させることは無効です。これは問題の直接の原因ではありませんが、完全に予測不可能な動作が発生します。( w 記述子は、その値と属性の値に基づいて、同等の x 記述子に変換されsizes
ます。)
第二に、 w 記述子は、あなたが求めているようなことをしません。ページ上の画像の最終的なサイズが単一のハードコードされた px 値ではない場合に、sizes
画像の密度を間接的に指定する方法として、属性とともに使用されます。画面のサイズとは何の関係もありませんし、何も隠しません。これは、イメージ ピクセル単位のイメージの幅です。
ここで、hero_desktop と hero_mobile が実際には異なる画像 (異なるサイズ、異なる切り抜き、異なるコンテンツなど) であり、同じ画像の異なる解像度のバージョンではないと仮定すると、実際にやりたいことは次のようになります<picture>
。
html:
<picture>
<source media="(min-width: 768px)" srcset="../img/hero_desktop.jpg">
<img src="../img/hero_mobile.jpg">
</picture>
これにより、画面が >= 768px の場合はデスクトップ イメージが選択され、それ以外の場合はデフォルトでモバイル イメージが選択されます。
一方、デスクトップとモバイルの画像が同じ画像で、解像度が異なるだけの場合は、 を使用する必要がありますが、いずれかまたは両方に<img srcset>
固執します。画像が静的サイズの場合、または「ネイティブ」サイズが許可されている場合に使用します。レイアウトによって画像が特定のサイズに設定されている場合は、(および)を使用します。次に、イメージがいつ切り替わるかについて心配する必要はありません。物事を正しく宣言していれば、ブラウザは妥当な選択をしてくれます。x
w
x
w
sizes