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

★HTML Living Standard リファレンス

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

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

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

type属性以外の属性は、source要素の親要素がpicture要素か、 メディア要素(video要素、または、audio要素)かによって異なります。

picture要素は、video要素audio要素とはリソース選択のアルゴリズムが異なります。 要素内にsource要素を配置する点は同じですが、使用できる属性などが異なります。

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

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

親要素がpicture要素の場合、 source要素にはsrc属性は存在してはならず、srcset属性が存在する必要があります。

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

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

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

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

親要素がメディア要素の場合、 source要素にはsrcset属性は存在してはならず、src属性が存在する必要があります。

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

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

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

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

■属性

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

■使用例

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

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>
↓↓↓

ブラウザ上の表示

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

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

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要素で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>
広告
Sponsors
広告
MuuMuu Domain!
ドメイン取るならお名前.com
現役エンジニアのオンライン家庭教師【CodeCamp】
サイトに広告を掲載してお小遣いが稼げる!【A8.net】
Node.jsコース
はじめてのプログラミングコース
▲ページ先頭へ
HTMLクイックリファレンスについて
© HTMQ