トップページ  > HTML Living Standard  > <source>

★HTML Living Standard リファレンス

<source> …… リソースの選択肢をセットする
Internet Explorer Microsoft Edge Google Chrome Safari Firefox Opera
広告

<source>タグは、リソースの選択肢をセットする際に使用します。 リソースとは、画像リソースやメディアリソース(動画・音声)です。

source要素は、親要素がpicture要素かメディア要素(video要素audio要素)かによって、 source要素に指定できる属性などが異なります。 picture要素とメディア要素(video要素audio要素)では、 リソース選択のアルゴリズムが異なるためです。

source要素の親要素がpicture要素の場合

picture要素内でsource要素を使用すると、 img要素の表示を環境に応じて切り替えるための複数の画像リソースのセットを指定できます。

親要素がpicture要素の場合、 source要素にはsrc属性は存在してはならず、srcset属性が存在する必要があります。 source要素のsrcset属性の値には、画像リソースのアドレス(URL)を指定します。 ここで指定した画像リソースは、環境に応じていずれかが利用される画像リソースのセットに追加されます。

media属性を指定する場合には、値には有効なメディアクエリを指定します。 メディアクエリの値が環境と一致しない場合、ユーザーエージェントは次のsource要素にスキップします。

■使用例

以下のサンプルは、メディアの画面幅に応じて利用する画像リソースを切り替えるように指定しています。 パソコンでご覧の場合には、ブラウザの横幅を変更してみてください。

HTMLソース

<picture>
 <source srcset="./sample/pear-mobile.jpg" media="(max-width: 720px)">
 <source srcset="./sample/pear-pc.jpg" media="(max-width: 1280px)">
 <img src="./sample/pear-desktop.jpg" alt="洋ナシはジューシーです。">
</picture>
↓↓↓

ブラウザ上の表示

洋ナシはジューシーです。

source要素の親要素がメディア要素の場合

source要素の親要素がメディア要素(video要素audio要素)の場合、 source要素を使用してメディア要素の代替となる複数のメディアリソースを指定できます。

親要素がメディア要素の場合、 source要素にはsrcset属性は存在してはならず、src属性が存在する必要があります。 source要素のsrc属性の値には、メディアリソースのアドレス(URL)を指定します。 ここで指定したメディアリソースは、環境に応じていずれかが利用されるメディアリソースのセットに追加されます。

尚、source要素のsrc属性やtype属性を動的に変更することで、再生内容を変更することは原則としてできません。 ドキュメントの解析後にsource要素を動的に変更するのは不必要に複雑なアプローチとのことです。

■使用例

以下のサンプルは、video要素で動画を表しています。 子要素のsource要素は、ブラウザに対して動画データの候補を提示しています。 ブラウザは、記述された順に再生可能なデータを利用します。

HTMLソース

<video>
 <source src="sample.mp4">
 <source src="sample.ogv">
 <source src="sample.webm">
 <p>動画を再生するには、video要素をサポートしたブラウザが必要です。</p>
</video>

source要素の終了タグについて

HTMLの仕様では、source要素には終了タグ</source>はありません。

親要素により指定できる属性が異なる

source要素でどの属性が指定できるかは、親要素がpicture要素か、 メディア要素(video要素audio要素)かによって異なります。

■属性

type属性
埋め込みリソースの種類を指定します。
src属性
リソースのアドレスを指定します。(親要素がvideo要素audio要素の場合)
srcset属性
高解像度ディスプレイ、小型モニターなど、さまざまな状況で使用する画像リソースの選択肢を指定します。(親要素がpicture要素の場合)
sizes属性
さまざまなページレイアウトにおける画像サイズを指定します。(親要素がpicture要素の場合)
media属性
対応メディアを指定します。(親要素がpicture要素の場合)
width属性
水平方向の寸法(横幅)を指定します。(親要素がpicture要素の場合)
height属性
垂直方向の寸法(高さ)を指定します。(親要素がpicture要素の場合)

codecsパラメータでエンコード方法を正確に指定する

source要素のtype属性を指定する場合には、埋め込みリソースの種類を有効なMIMEタイプの文字列で指定します。

type属性でメディアリソースの種類を指定すると、 ユーザーエージェントがこのメディアリソースを取得する前に、再生できるかどうかを判断できるようになります。 リソースのエンコード方法を正確に指定するには、type属性のなかでcodecsパラメータを同時に指定します。

■使用例

以下のサンプルは、source要素のtype属性でメディアリソースの種類とcodecsパラメータを指定した使用例です。 WHATWGのウェブサイトに掲載されているHTMLソースをそのまま転載したものであり、 それぞれのcodecsパラメータの詳細は不明です。

HTMLソース

<source src='video.mp4' type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
<source src='video.mp4' type='video/mp4; codecs="avc1.58A01E, mp4a.40.2"'>
<source src='video.mp4' type='video/mp4; codecs="avc1.4D401E, mp4a.40.2"'>
<source src='video.mp4' type='video/mp4; codecs="avc1.64001E, mp4a.40.2"'>
<source src='video.mp4' type='video/mp4; codecs="mp4v.20.8, mp4a.40.2"'>
<source src='video.mp4' type='video/mp4; codecs="mp4v.20.240, mp4a.40.2"'>
<source src='video.3gp' type='video/3gpp; codecs="mp4v.20.8, samr"'>
<source src='video.ogv' type='video/ogg; codecs="theora, vorbis"'>
<source src='video.ogv' type='video/ogg; codecs="theora, speex"'>
<source src='audio.ogg' type='audio/ogg; codecs=vorbis'>
<source src='audio.spx' type='audio/ogg; codecs=speex'>
<source src='audio.oga' type='audio/ogg; codecs=flac'>
<source src='video.ogv' type='video/ogg; codecs="dirac, vorbis"'>

■使用例

以下のサンプルは、source要素とスクリプトを組み合わせて、 ブラウザがsource要素で与えられたメディアリソースを再生できない場合のエラー処理をしています。

ブラウザがメディアリソースをレンダリングできるかどうか分からない場合、 作成者は最後のsource要素でerrorイベントを拾ってフォールバックを動作させることができます。

HTMLソース

<script>
 function fallback(video) {
   // replace <video> with its contents
   while (video.hasChildNodes()) {
     if (video.firstChild instanceof HTMLSourceElement)
       video.removeChild(video.firstChild);
     else
       video.parentNode.insertBefore(video.firstChild, video);
   }
   video.parentNode.removeChild(video);
 }
</script>
<video controls autoplay>
 <source src='video.mp4' type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
 <source src='video.ogv' type='video/ogg; codecs="theora, vorbis"' onerror="fallback(parentNode)">
</video>

source要素自体は何も表さない

source要素は、画像リソースやメディアリソースの選択肢をセットしますが、source要素自体は何も表しません。

■関連項目

  • <picture> …… 画像リソースの選択肢を提供する
  • <source> …… リソースの選択肢をセットする
  • <img> …… 画像を表す
  • <embed> …… 埋め込みリソースを表す
  • <object> …… 外部リソースを表す
  • <video> …… ビデオを表す
  • <audio> …… サウンドやオーディオを表す
  • <track> …… メディア要素のテキストトラックを表す
広告
Sponsors
広告
MuuMuu Domain!
ドメイン取るならお名前.com
現役エンジニアのオンライン家庭教師【CodeCamp】
サイトに広告を掲載してお小遣いが稼げる!【A8.net】
Node.jsコース
はじめてのプログラミングコース
▲ページ先頭へ
HTMLクイックリファレンスについて
© HTMQ