title | slug | l10n | ||
---|---|---|---|---|
<source>: メディアまたは画像のソース要素 |
Web/HTML/Element/source |
|
{{HTMLSidebar}}
<source>
は HTML の要素で、{{HTMLElement("picture")}}、{{HTMLElement("audio")}}、{{HTMLElement("video")}} の各要素に対し、複数のメディアリソースを指定します。この要素は{{glossary("void element", "空要素")}}であり、すなわち中身も閉じタグもありません。画像ファイル形式やメディアファイル形式の対応状況が様々であるブラウザーの幅広い互換性を確保するために、同じメディアコンテンツを複数のファイル形式で提供することはよくあることです。
{{EmbedInteractiveExample("pages/tabbed/source.html", "tabbed-standard")}}
この要素はすべてのグローバル属性をサポートし、加えて下記の属性を使うことができます。
-
type
- : 画像の MIME メディア型またはその他のメディア型で、オプションで
codecs
引数を伴います。
- : 画像の MIME メディア型またはその他のメディア型で、オプションで
-
src
- : メディアのリソースの URL です。この
source
要素の親が {{HTMLElement("audio")}} および {{HTMLElement("video")}} 要素の場合は必須ですが、source
要素の親が {{HTMLElement("picture")}} 要素である場合は指定できません。
- : メディアのリソースの URL です。この
-
srcset
-
: 1つ以上の画像のURLと記述子をカンマで区切ったリストです。この
source
要素の親が {{HTMLElement("picture")}} 要素である場合は必須ですが、source
要素の親が {{HTMLElement("audio")}} または {{HTMLElement("video")}} 要素の場合は指定できません。文字列をカンマ区切りで並べたリストであり、ブラウザーが使用できる画像のセットを示します。それぞれの文字列の構成は以下のとおりです。
- 画像を指定する 1 つの URL
- 幅記述子。これは正の整数に
"w"
を付加した文字列で、例えば300w
のようになります。 - 画素密度記述子。これは直後に
"x"
を付加した正の浮動小数点数で、例えば2x
のようになります。
有効であるためには、リスト内の各文字列は、少なくとも幅記述子またはピクセル密度記述子を持たなければなりません。2 種類の記述子が混在してはならず、リスト全体で一貫して一方のみを使用しなければなりません。リストの中で、各記述子の値は固有でなければなりません。ブラウザーは記述子を基に、指定された時点で表示するために最も適切な画像を選びます。記述子が存在しない場合の既定値は
1x
です。sizes
属性が存在する場合は、各文字列に対して幅の記述子を指定しなければなりません。ブラウザーがsrcset
に対応していない場合は、src
が既定値として使用されます。
-
-
sizes
-
: ソースの寸法のリストで、そのソースが表す画像が最終的に表示される幅を表します。この
source
要素の親が {{HTMLElement("picture")}} 要素である場合は指定可能ですが、source
要素の親が {{HTMLElement("audio")}} または {{HTMLElement("video")}} 要素の場合は指定できません。リストはそれぞれのソースのサイズをカンマ区切りで並べたものです。サイズは、条件と長さの組です。この情報は
srcset
で指定されたどの画像を使用するかを決めるため、ページのレイアウトを行う前にブラウザーが使用します。なお、sizes
はsrcset
でピクセル倍率ではなく幅指定子が提供された時(例えば 2x ではなく 200w の場合)のみ、効果があることに注意してください。
-
-
media
- : リソースの志向するメディアのメディアクエリーです。
-
height
-
: 画像の本来の高さをピクセル単位で指定します。この
source
要素の親が {{HTMLElement("picture")}} 要素である場合は指定可能ですが、source
要素の親が {{HTMLElement("audio")}} または {{HTMLElement("video")}} 要素の場合は指定できません。単位のない整数でなければなりません。
-
-
width
-
: 画像の本来の幅をピクセル単位で指定します。この
source
要素の親が {{HTMLElement("picture")}} 要素である場合は指定可能ですが、source
要素の親が {{HTMLElement("audio")}} または {{HTMLElement("video")}} 要素の場合は指定できません。単位のない整数でなければなりません。
-
<source>
要素は空要素です。すなわち内容がないだけでなく、終了タグもありません。すなわち、 "</source>
" は HTML の中で決して使われません。
ブラウザーは source
要素のリストをたどり、サポートする形式を探します。最初に見つかった表示可能なのものを使います。それぞれのsource
要素で、
type
属性が指定されていない場合は、サーバーからメディア形式を取得して、表示可能なものかを確認します。表示できない場合は、次の<source>
をチェックします。type
属性が指定された場合、表示できる形式と比較します。扱えないものであれば、サーバーへのクエリーをスキップし、次の<source>
要素をチェックします。
提供されたすべての <source>
を調べても使用する適切な画像が見つからなかった場合、
<picture>
要素で用いた場合は、<picture>
要素の子の {{HTMLElement("img")}} で指定した画像を代わりに使用します。<audio>
または<video>
要素で用いた場合は、代わりにブラウザーは開始タグと終了タグの間にある内容を表示します。
ウェブブラウザーが対応している画像形式の詳細と、使用する適切な形式を選択するためのガイダンスについては、ウェブ上で使用する画像ファイルの種類と画像のガイドを参照してください。使用できる動画・音声メディアの種類については、ウェブ上で使用するメディアの種類と形式のガイドを参照してください。
次の例は、 異なる形式で動画を提供する記述方法です。Webm 形式をサポートするブラウザーと、Ogg 形式に対応した環境と QuickTime 動画形式を再生可能なブラウザーを想定した記述例です。 audio
要素や video
要素に対応していない場合、代わりに通知が表示されます。 audio 要素や video 要素には対応していても指定した形式のすべてが再生不可である場合は、 error
イベントが発生し、(もしあれば)既定のメディアコントロールがエラーを示します。使用できるメディアファイル形式や、ブラウザーが対応しているメディアファイル形式の詳細については、ウェブ上のメディアの種類と形式についてのガイドを参照してください。
<video controls>
<source src="foo.webm" type="video/webm" />
<source src="foo.ogg" type="video/ogg" />
<source src="foo.mov" type="video/quicktime" />
I'm sorry; your browser doesn't support HTML video.
</video>
こので例は、上のビューポートである幅に合わせた代わりのソースを提供する方法を示します。ユーザーのブラウザー環境が指定された media
条件に合致するとき、関連付けられた <source>
要素が選ばれます。その src
属性の内容が要求され、表示されます。もし media
条件に合うものがなければ、ブラウザーはリストの次の <source>
に進みます。下のコードの 2 つめの <source>
は media
条件の指定がなく、1 番めの条件以外のすべての場合に選択されます。
<video controls>
<source src="foo-large.webm" media="(min-width: 800px)" />
<source src="foo.webm" />
I'm sorry; your browser doesn't support HTML video.
</video>
その他の例については、学習エリアの記事動画と音声のコンテンツにすばらしいリソースがあります。
この例では、2 つの <source>
要素が {{HTMLElement("picture")}} 内に含まれており、利用可能な空間の大きさがある幅を超えた時に使用する画像のバージョンを提供します。利用可能な幅がこれらの幅よりも小さい場合、ユーザーエージェントは {{HTMLElement("img")}} 要素で指定された代替画像を表示します。
<picture>
<source srcset="mdn-logo-wide.png" media="(min-width: 800px)" />
<source srcset="mdn-logo-medium.png" media="(min-width: 600px)" />
<img src="mdn-logo-narrow.png" alt="MDN Web Docs" />
</picture>
<picture>
要素では、常に一つの <img>
要素をフォールバック画像として、 alt
属性をアクセシビリティのためにつける必要があります。 (画像が内容に関連のない純粋に装飾的な画像でない限り)。
この例では、height
と width
属性を持つ 3 つの<source>
要素が、{{HTMLElement("picture")}} 要素に含まれています。
メディアクエリーにより、ビューポートの寸法に基づいて、height
および width
属性により表示すべき画像をブラウザーに選択させます。
<picture>
<source
srcset="landscape.png"
media="(min-width: 1000px)"
width="1000"
height="400" />
<source
srcset="square.png"
media="(min-width: 800px)"
width="800"
height="800" />
<source
srcset="portrait.png"
media="(min-width: 600px)"
width="600"
height="800" />
<img
src="fallback.png"
alt="Image used when the browser does not support the sources"
width="500"
height="400" />
</picture>
コンテンツカテゴリー | なし |
---|---|
許可されている内容 | なし。この要素は{{Glossary("void element", "空要素")}}です。 |
タグの省略 | 開始タグは必須。終了タグを記述してはならない。 |
許可されている親要素 |
メディア要素({{HTMLElement("audio")}} または
{{HTMLElement("video")}})の場合、どの
フローコンテンツまたは {{HTMLElement("track")}} 要素よりも前に配置する。
{{HTMLElement("picture")}} 要素の場合、
{{HTMLElement("img")}} 要素より前に配置する。
|
暗黙の ARIA ロール | 対応するロールなし |
許可されている ARIA ロール | なし |
DOM インターフェイス | {{domxref("HTMLSourceElement")}} |
{{Specifications}}
{{Compat}}
- {{HTMLElement("audio")}} 要素
- {{HTMLElement("picture")}} 要素
- {{HTMLElement("video")}} 要素
- 画像ファイルの型と形式のガイド
- ウェブ上のメディアの種類と形式のガイド
- ウェブパフォーマンス