HTML / Element / Initial coverage

<optgroup>要素

状態: 初期Coverage 対象: HTML Living Standard 仕様確認日: 2026-09-16

Technical Summary

optgroup要素は、共通のlabelを持つoptionのグループを表します。通常はselectの子孫として使い、グループの選択肢を他の選択肢と区別して提示します。

optgroup自身は選択できません。labelはグループ名、disabledはグループに含まれるoptionをまとめて無効にする境界です。フォーム送信のentryを作る主体はselectであり、グループ名は送信値ではありません。

Definition / Categories

項目仕様上の整理
意味共通のlabelを持つoptionのグループ
Categoriesなし
Contextselectの子孫
Content model0個または1個のlegendに続く、0個以上のoption、script-supporting要素、noscriptdiv
Content attributesdisabledlabel、およびglobal attributes
DOM interfaceHTMLOptGroupElementdisabledlabelを持つ

現行仕様のcontent modelには、customizable selectで関係するlegendの位置が含まれます。従来から広く使われる通常のselectでは、label属性とoptionの組み合わせが基本形です。

Group boundary

optgroupのグループは、その要素の子孫であるoptionから構成されます。ユーザーエージェントは、同じグループに属するoptionを、他のoptionと関係付けて表示することが期待されます。

<label for="format">形式</label>
<select id="format" name="format">
  <optgroup label="文書">
    <option value="html">HTML</option>
    <option value="markdown">Markdown</option>
  </optgroup>
  <optgroup label="データ">
    <option value="json">JSON</option>
  </optgroup>
</select>

グループのlabelとoptionのlabelは別の情報です。送信されるのは選択されたoptionの値であり、optgroupのlabelはselectのentry listに追加されません。

Label resolution

optgroupのUI上のlabelは、現行HTML Standardのlabel algorithmで解決されます。customizable selectにおけるlegendと、通常のlabel属性の優先関係を分けて扱う必要があります。

条件グループlabelの解決確認範囲
最初のelement childがlegendそのlegendのHTML-aware text contentcustomizable selectのgroup caption
child legendがなくlabel属性があるlabel属性の値通常のselectで使う基本構文
どちらもない空文字列child legendがない場合はlabel属性が必要
<select name="component">
  <optgroup label="標準要素">
    <option value="button">button</option>
  </optgroup>
</select>

通常のselectでグループ名を示すときは、label属性を明示します。optionのテキストはグループlabelの代わりにはなりません。

Disabled boundary

disabledはboolean attributeです。optgroupに指定すると、グループに含まれるoptionをまとめて無効にできます。option自身のdisabled IDL属性がfalseでも、disabledなoptgroupの影響で実効的に:disabledとなる境界を、属性値と状態に分けて確認します。

<select name="plan">
  <optgroup label="提供中">
    <option value="basic">ベーシック</option>
  </optgroup>
  <optgroup label="提供終了" disabled>
    <option value="legacy">旧プラン</option>
  </optgroup>
</select>
対象自身の属性実効状態
optgroupdisabled=trueグループ内optionへdisabledの影響を与える
option(自身のdisabledなし)option.disabled=falsedisabled optgroup内なら:disabledに一致し、ユーザー選択できない
option(自身のdisabledあり)option.disabled=true自分自身のdisabled状態で選択できない

Form submission and option list

optgroupはフォーム送信値を持つsubmittable controlではありません。選択されたoptionをentry listへ反映するのは親のselectです。optgroupのlabelやdisabled状態は、選択値そのものとは別の情報です。

selectのoption listでは、optgroupは選択肢を整理する構造として関係します。選択できる対象はoptionだけで、optgroupを直接選択する状態や、optgroup単独のFormData entryはありません。

DOM Interface

optgroup要素はHTMLOptGroupElementとして公開されます。フォームのownerやvalueを持つ要素ではなく、属性を通じてグループのlabelとdisabledを扱います。

const group = document.querySelector('optgroup');

group.label;
group.disabled;
group.matches(':disabled');
group.querySelectorAll('option');
API概要注意点
labellabel属性を反映する文字列UI上のgroup label algorithmの結果とは、legendがある場合に境界がある
disabledoptgroup自身のdisabled属性を反映するboolean子optionの実効的なdisabled状態とは分けて扱う
querySelectorAll('option')グループ内のoptionを取得する取得したoptionの選択・送信規則はoptionとselectに従う

Fact / Evidence(主張 / 根拠)

仕様上の定義、label解決、disabled境界、フォームとの関係を、主張・条件・根拠位置に分けて記録します。ブラウザー実装とアクセシビリティツリーの観測は、下のImplementation Evidenceへ分離しています。

主要Factと根拠位置
種別Fact / 主張条件・範囲状態根拠
SPECoptgroupは共通のlabelを持つoptionのグループを表し、selectの子孫として使われます。意味、context、content model。確認済みHTML Standard: optgroup
SPECoptgroup自身は選択できず、選択できる対象はその中のoptionです。selectのoption listとUIでのグループ表示。確認済みHTML Standard: group and selection boundary
SPECdisabledはoptgroup内のoptionをまとめて無効にし、group labelはlegendまたはlabel属性から解決されます。disabled boundary、通常select、customizable selectのlegend。確認済みHTML Standard: disabled and label
SPECHTMLOptGroupElementdisabledlabelのIDL属性を公開します。DOM interfaceと属性反映。確認済みHTML Standard: DOM interface
AAMoptgroupはアクセシビリティ上、option groupとして扱われる仕様上のmappingを持ちます。role、group label、子optionとの関係。仕様確認済みHTML Accessibility API Mappings: optgroup

Evidence

  1. HTML Standard: The optgroup element — context、content model、label、disabled、selection boundary、DOM interface
  2. HTML Standard: The select element — option list、selectのsubmission、customizable selectとの関係
  3. HTML Standard: The option element — optionのdisabled、選択状態、値、optgroup境界
  4. HTML Standard: The legend element — customizable select内optgroupのgroup label
  5. HTML Accessibility API Mappings — optgroupのgroup mappingとplatform APIの確認入口
  6. Web Platform Tests: select element — select、option、optgroupの関連テスト群の入口

Implementation Evidence

仕様上の主張とは別に、ブラウザー実装・WPT・アクセシビリティ観測を記録します。未実施の項目は確認済みとは扱いません。

共通fixture / 記録: fixture ID forms-core-v1で、select内のdisabled optgroup、option自身のdisabled属性との境界、select経由のFormData、optionの:disabled状態を確認しました。Chrome 152.0.0.0 / Windows 10 / 確認日 2026-09-15。14項目中14項目がpassです。

optgroup要素の実装Evidence登録表
種別再現確認の範囲記録する条件状態
IMPLdisabled optgroup、optionの実効的disabled、select経由のFormDataChrome 152.0.0.0 / Windows 10でfixture ID forms-core-v1を実行。optgroup自身のdisabled属性、子optionのdisabled IDL、:disabled一致、disabled optionのFormData除外を確認しました。複数ブラウザーとcustomizable selectは未実施確認済み(Chrome 1台)
WPToptgroup、option list、disabled group、customizable selectの個別テストselect elementのWPTディレクトリへ対応付け。2026-09-15の選定実行ではoptgroup固有のテスト結果を登録していないため、個別のpass/failは主張しません未実施
AAMoptgroupのgroup mapping、label公開、子optionとの関係ブラウザーAccessibility tree、platform Accessibility API、支援技術で、通常selectとcustomizable selectの状態を分けて観測する未実施

今回のIMPLは既存のフォーム共通fixtureによるChrome 1環境のDOM・フォームAPI実測です。WPTの個別結果、optgroup自身のAX観測、複数ブラウザー比較が揃うまでは、すべての実装に共通する結果として登録しません。

Coverage / Open Issues

  • 確認済みoptgroupの意味、context、content model、label・disabled属性、HTMLOptGroupElementのIDL
  • 確認済みoptgroupとoptionの選択境界、selectのFormDataとの関係、disabled groupの仕様上の境界
  • 未完了optgroup固有のWPT実行結果、複数ブラウザーでのdisabled・label・option list比較
  • 未完了通常selectとcustomizable selectのrendering、optgroup内legend、先頭legendのlabel解決
  • 未完了HTML-AAMの全mapping、platform API、支援技術ごとのgroup label読み上げ

このページは初期Coverageです。Chrome 1環境で確認した範囲を示すものであり、すべてのブラウザーで同じ表示・操作・アクセシビリティAPI結果になること、またはoptgroup要素全体の検証が完了したことを主張しません。

Related surface

初心者向けのグループ化とlabeldisabledの使い方はYugienのoptgroup要素ページを参照してください。選択モデル全体はselect要素、個別の候補とselectednessはoption要素、customizable select内のlegendlegend要素でも確認できます。