HTML要素 ・ リンク・画像

<picture>

条件に応じて画像を切り替える

画面幅や対応形式に応じて、表示する画像を切り替えるための要素です。中に source と img を入れて使います。

種類
インライン要素(置換要素を含む)
終了タグ
必須
中に入れる
source(0個以上)+ img(1個)
01

サンプルコード

HTML
1<picture>
2 <source media="(min-width: 600px)" srcset="photo-wide.jpg">
3 <img src="photo.jpg" alt="店内の様子" width="320" height="200">
4</picture>
CSS
1img {
2 max-width: 100%;
3 height: auto;
4}
02

実行結果

ブラウザでの表示プレビューの幅が600px以上のときは photo-wide.jpg が表示されます
03

解説

picture は、条件に合った画像を1つだけ選んで表示する仕組みです。上から順に source の条件を調べ、最初に合ったものの画像が使われます。

media 属性には @media と同じ書き方で条件を書きます。どの条件にも合わないときは、最後の img の画像が表示されます。

img は必ず最後に書きます。alt や width・height も img 側に書きます。

04

応用例・注意点

source の主な属性

属性説明
srcset使う画像ファイル
media画面幅などの条件(@media と同じ書き方)
type画像形式(image/webp など)。対応していれば使われる
sizes画像の表示幅のヒント

WebP を優先して読み込む

WebP に対応したブラウザでは軽い WebP を、それ以外では JPEG を表示します。

HTML
1<picture>
2 <source type="image/webp" srcset="photo.webp">
3 <img src="photo.jpg" alt="店内の様子" width="320" height="200">
4</picture>

注意点

  1. 01img を書き忘れると何も表示されません。
  2. 02同じ画像のサイズ違いを出し分けるだけなら、img の srcset と sizes でも実現できます。
↑↓ 選択Enter 移動Esc 閉じるCtrl K⌘K で開閉