HTML / Element / Initial coverage

<source>要素

状態: 初期Coverage 対象: HTML Living Standard・HTML-AAM・WPT 仕様確認: 2026-09-26

Technical Summary

sourceは、親がpictureなら画像のsource setを、audioまたはvideoならmedia resource候補を指定します。要素自体は何も表しません。名前が同じでも、親要素によって必要・禁止される属性と選択処理が異なります。

pictureではsrcsetが必須で、srcは禁止です。media elementでは有効な非空URLを持つsrcが必須で、srcsetとsizesは禁止です。条件不一致・typeの非対応・取得後の失敗は、同じ「fallback」としてまとめず、選択段階を分けて扱います。

Definition / Categories

項目定義
意味imgまたはmedia elementが選ぶsource set / media resource候補を指定する。source自身は何も表さない
Categoriesなし
配置pictureの子ではimgより前。audio / videoの子では、flow contentやtrackより前
Content modelNothing
終了タグなし。void element
DOM interfaceHTMLSourceElement。src、type、srcset、sizes、media、width、heightを反映するIDL属性を持つ

親要素で変わるcontent modelと属性

親配置・必須属性利用可能な属性禁止・条件
pictureimgより前。srcset必須media、type、sizes、width、heightsrcは禁止。width descriptorを使い、後続imgがauto-sizesを許さない場合、sizesが必要。後続source / imgにもsrcsetがあるとき、各sourceには非空・非allのmediaかtypeが必要
audio / video親にsrcがないcontent modelでは、trackとflow contentより前。有効な非空URLのsrc必須type、mediasrcsetとsizesは禁止。typeは再生可能性を取得前に判定する手がかりで、必要に応じてMIME codecs parameterを含める

media elementに自身のsrc属性がある場合は、子sourceの候補選択とは異なるcontent modelになります。親にsrcを設定したまま、子sourceが代替候補になると仮定してはいけません。

picture内の画像source selection

<picture>
  <source media="(min-width: 48rem)" type="image/avif"
          srcset="/images/landscape-wide.avif">
  <source media="(min-width: 48rem)" type="image/jpeg"
          srcset="/images/landscape-wide.jpg">
  <img src="/images/landscape-narrow.jpg" alt="山と湖の風景"
       width="640" height="360">
</picture>

ブラウザーはpictureの子を順に確認し、mediaが環境に一致し、typeをサポートする候補を選びます。どのsourceも選ばれないと、後続のimg自身のsrc / srcsetが使われます。画像のリクエストやデコード失敗は、候補条件に一致しなかった場合と同一のfallback条件ではありません。

pictureでは、画面などの環境が変化した場合にsource selectionが再評価されます。mediaは有効なmedia query listであり、typeはsource setに含まれる画像形式のMIME typeを示します。形式の実際の取得・デコード成功までは保証しません。

audio / video内のmedia resource selection

<video controls>
  <source src="/media/lesson.webm" type="video/webm">
  <source src="/media/lesson.mp4"
          type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
  <track kind="captions" src="/media/lesson.ja.vtt"
         srclang="ja" label="日本語のキャプション">
</video>

media elementの候補は、親要素のresource selection algorithmで評価されます。typeはMIME typeで形式を示し、MIME typeによってはcodecsparameterが必要です。mediaも使えますが、media elementではresource selection時に一度評価されます。pictureのmedia条件が環境変化に反応する点と区別してください。

sourceはtrackより前に置きます。sourceのsrcまたはtypeを、要素がすでにmedia elementへ挿入された後に変更しても、その変更だけで現在の再生候補は切り替わりません。切替には親media elementのsrcなど、media要素側のresource selectionを操作します。

選択・非対応・fallbackを分ける

段階pictureaudio / video
候補条件が一致しないmediaに合わないsourceを飛ばし、次を評価するmediaに合わないsourceを候補から除外する
形式をサポートしないtypeが示す画像形式をサポートしないsourceを飛ばすtypeを再生可否の事前判断に使う。MIME typeやcodecの記述だけで実際の再生を保証しない
候補なし後続imgの画像候補を使う最後のsourceのerror eventを使った独自fallbackは可能。media elementのfallback contentは、再生に失敗したすべての場合に表示されるものではない
選択済みresourceの取得・処理失敗未選択候補へ切り替わるとは限らず、画像element側のrequest状態を確認するresource selectionとmedia errorの仕様・実装状態を別に確認する

Accessibility boundary

sourceはそれ自体では何も表さないため、画像のaccessible nameやalternative textを持たせる要素ではありません。pictureで表示される画像のテキスト代替はimgのaltで定義します。音声・動画の意味、native controls、字幕などは親media elementと子trackを含むコンテンツ全体で評価します。

仕様上のmappingと、ブラウザーが公開するAccessibility Treeは別Evidenceです。Chromeのfixture snapshotでは4個のsource nodeは個別に公開されませんでした。platform APIや支援技術の挙動は未観測です。今回の観測範囲はImplementation Evidenceを参照してください。

Fact / Evidence(主張 / 根拠)

種別主張条件・範囲状態根拠
SPECsourceは何も表さず、content modelはNothing、親要素に応じてHTMLSourceElement属性を使う。pictureまたはmedia elementの子要素としてのHTML仕様。要素単独の表示・accessibility semanticsとは扱わない。確認済みHTML Standard: source
SPECpictureのsourceはsrcset必須・src禁止であり、後続imgが画像表示とfallbackを担う。pictureの子の順序、media / type選択、sizes条件を含む。確認済みHTML Standard: source attributes · picture
SPECmedia element配下のsourceはsrc必須で、srcsetとsizesを指定できない。audio / videoのresource selection。typeのMIME / codecs情報、親srcと子sourceの境界を含む。確認済みHTML Standard: source in media elements
SPECmediaは、pictureの環境変化による再選択と、media elementでのresource selection時の一回評価で異なる。親要素固有のsource selection。実装挙動・network requestは別途観測する。確認済みHTML Standard: media attribute
SPEC挿入済みmedia element内のsourceのsrc / type変更だけでは、再生候補は切り替わらない。DOM mutationとmedia element resource selectionの境界。実ブラウザー比較は未実施。確認済みHTML Standard: source mutation

Evidence

  1. HTML Living Standard: The source element — categories, contexts, attributes, parent-specific constraints, DOM interface, and insertion / mutation steps
  2. HTML Living Standard: The picture element and Images — image source selection and fallback
  3. HTML Living Standard: Media elements — audio / video resource selection and media state
  4. HTML Accessibility API Mappings — reference for normative HTML-to-platform mappings, separate from measured browser Accessibility Trees
  5. Web Platform Tests: embedded content — test discovery entry point; selected WPT results are recorded under Implementation Evidence

Implementation Evidence

専用fixtureでのChrome観測、選定WPT、Chrome Accessibility Tree snapshotの結果を記録します。1 browser環境と選定範囲に限り、platform API・支援技術やbrowser間比較は未観測です。

source implementation evidence registry
種別観測範囲記録する条件状態
IMPL pictureとmedia parentのsource選択、currentSrc、network request、media / image viewport change、error状態 2026-09-26 / Chrome UA 154.0.0.0 / Windows 11 Pro build 26200 / viewport 1280×720 / DPR 1.25 / local source-v1。pictureは(min-width: 640px)でwide.svgを選択、sourceのmediaを(max-width: 0px)に変更するとimgのfallback.svgへ切替。初回navigationではfallback / wide双方がHTTP 200、次の初期loadではwideのみ取得、media変更でfallbackをHTTP 200取得。unsupported image/audio MIME候補のrequestなし(404を記録するserverでも確認)。media parentはunsupported MIMEを飛ばしsample.wavをHTTP 206 audio/wavから選択、networkState=1 / readyState=4 / duration=3秒。viewport resize、decode / network failure、他browserは未実施。 部分観測(Chrome 154 / 1環境)
WPT picture responsive-image selection、media parentのsource.media、resource selection・DOM mutation tests。選定WPTはmedia MIME type filteringを含まない 2026-09-26 / Chrome UA 154.0.0.0 / Windows 11 Pro build 26200 / wpt.live。選定6ファイルで23/24 assertions pass。source-relevant-mutations.html 14/14、update-media.html 1/1、source-media-outside-doc.html 3/3、resource-selection-source-media.html 2/2、resource-selection-source-media-env-change.html 3/3。resource-selection-candidate-insert-before.htmlは1/1 failを2回確認(expected #a, got #b)。GitHub master source review SHA bdadba91cf68adbfe90eaf264117218d02a3d94b。wpt.live deployed SHAは非公開。他test・browser未実施。

実測時のテスト版は未記録です。リンク先の内容は変わることがあり、当時と同じテストで再確認できるとは限りません。

部分実行(23/24 assertions pass)
AAM source単体、選択後のimg、media controls / text trackのAccessibility Treeと支援技術公開 2026-09-26 / Chrome UA 154.0.0.0 / Windows 11 Pro build 26200 / local fixture。Chrome Accessibility Treeはalt A blue field with a white circleのimageと、Description Source fixture low tone付きmedia container、button 再生、slider オーディオ再生バー等を公開。DOM上の4個のsource要素はsnapshot内に個別nodeなし。text trackは未fixture。Windows platform API・Narrator / NVDA等は未観測。 部分観測(Chrome AX Tree)

Coverage / Open Issues

  • 仕様確認済み要素の意味、配置、content model、void要素、HTMLSourceElement
  • 仕様確認済みpictureとmedia elementで異なる属性要件、source selection、type / media / fallbackの境界
  • 仕様確認済みsource単体の意味と、img・media parentのAccessibility境界
  • 部分観測IMPL: Chrome 154 / 1環境でsource選択・取得とmedia属性変更を測定。viewport resize、error、browser間比較は未実施
  • 部分実行WPT: 選定6 filesで23/24 assertions pass。media source挿入時の1 assertion failを2回観測
  • 部分観測AAM: Chrome Accessibility Tree snapshotを測定。platform API、支援技術、text trackは未観測

これらの実測は1 browser環境、選定WPT、Chrome Accessibility Treeに限ります。未実施範囲についてbrowser間の互換性や適合性を主張しません。

Related surface

初心者向けの例はYugienのsource要素ページを参照してください。画像のresource selectionはpictureとimg、media resourceと再生stateはaudio・video、外部text trackはtrackで確認できます。