<source>要素の使い方・サンプルコード
<source>
<source>要素は、<picture>要素、<video>要素、<audio>要素の子要素として使うことで、画面サイズや端末に応じて切り替えるリソースを指定することができます。
属性
media(picture 要素のみ)
リソースがどのメディアに対応しているのかメディアクエリを指定します。
sizes(picture 要素のみ)
srcset 属性を幅で指定した場合のみ有効になります。
sizes 属性の値は、画像を表示する条件を表すメディア条件と、条件に一致したときの画像サイズで指定します。画像サイズはピクセル密度指定子ではなく、幅指定子で指定します。
<picture>
<source srcset="img/320.png 320w,
img/640.png 640w,
img/1024.png 1024w"
sizes="(max-width: 320px) 200px, (max-width: 640px) 400px, 800px">
<img src="img/1024.png" alt="画像" />
</picture>
src
リソースの URL を指定します。
<audio> 要素と <video> 要素では必須ですが、<picture> 要素は srcset 属性の値が使われるので src 属性は無視されます。
srcset(picture 要素のみ)
ブラウザのスクリーンサイズやピクセル比によって表示する画像を切り替える場合に、画像 URL を指定します。
切り替える条件は「幅記述子」または「ピクセル密度記述子」で指定することができます。
① 幅記述子で切り替える場合
幅記述子で記述すると、ユーザーのビューポート(ブラウザ)幅によって画像の切り替えポイントを指定することができます。
<picture>
<source srcset="img/320.png 320w,
img/640.png 640w,
img/1024.png 1024w">
<img src="img/1024.png" alt="画像" />
</picture>
このコードでは
- 幅が 320 の場合は img/320.png
- 幅が 640 の場合は img/640.png
- 幅が 1024 の場合は img/1024.png
と切り替えることができます。
② ピクセル密度記述子で切り替える場合
ピクセル密度記述子で記述すると、ユーザーのビューポート(ブラウザ)の解像度よって画像の切り替えポイントを指定することができます。
ピクセル密度で切り替える場合は「数値x」と書きます。
<picture>
<source srcset="img/320.png 1x,
img/640.png 2x,
img/1024.png 3x">
<img src="img/1024.png" alt="画像" />
</picture>
type
リソースの MIME タイプを指定します。
グローバル属性
全ての HTML 要素に共通して使用できるグローバル属性はこちら
使用例
例① video 要素内で使う
<video controls width="320" height="200">
<source src="sample.mp4" type="video/mp4">
<source src="sample.mov" type="video/quicktime">
このブラウザでは動画を再生できません。
</video>
例② picture 要素内で使う
このサンプルでは
- ビューポート幅が 640px 以下の場合は img/640.png
- それ以外の場合は img/1024.png
を表示します。
<picture>
<source srcset="img/640.png"
media="(max-width: 640px)">
<img src="img/1024.png" alt="画像" />
</picture>
対応ブラウザ
関連するタグ
- <audio>:音声ファイルを読み込む
- <img>:画像ファイルを表示する
- <picture>:画面サイズや端末に応じて表示するリソースを切り替える
- <source>:画面サイズや端末に応じて切り替えるリソースを指定する
- <video>:動画ファイルを読み込む